xfs: introduce xfs_buf_submit[_wait]
[cascardo/linux.git] / fs / xfs / xfs_buf.c
1 /*
2  * Copyright (c) 2000-2006 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18 #include "xfs.h"
19 #include <linux/stddef.h>
20 #include <linux/errno.h>
21 #include <linux/gfp.h>
22 #include <linux/pagemap.h>
23 #include <linux/init.h>
24 #include <linux/vmalloc.h>
25 #include <linux/bio.h>
26 #include <linux/sysctl.h>
27 #include <linux/proc_fs.h>
28 #include <linux/workqueue.h>
29 #include <linux/percpu.h>
30 #include <linux/blkdev.h>
31 #include <linux/hash.h>
32 #include <linux/kthread.h>
33 #include <linux/migrate.h>
34 #include <linux/backing-dev.h>
35 #include <linux/freezer.h>
36
37 #include "xfs_log_format.h"
38 #include "xfs_trans_resv.h"
39 #include "xfs_sb.h"
40 #include "xfs_ag.h"
41 #include "xfs_mount.h"
42 #include "xfs_trace.h"
43 #include "xfs_log.h"
44
45 static kmem_zone_t *xfs_buf_zone;
46
47 static struct workqueue_struct *xfslogd_workqueue;
48
49 #ifdef XFS_BUF_LOCK_TRACKING
50 # define XB_SET_OWNER(bp)       ((bp)->b_last_holder = current->pid)
51 # define XB_CLEAR_OWNER(bp)     ((bp)->b_last_holder = -1)
52 # define XB_GET_OWNER(bp)       ((bp)->b_last_holder)
53 #else
54 # define XB_SET_OWNER(bp)       do { } while (0)
55 # define XB_CLEAR_OWNER(bp)     do { } while (0)
56 # define XB_GET_OWNER(bp)       do { } while (0)
57 #endif
58
59 #define xb_to_gfp(flags) \
60         ((((flags) & XBF_READ_AHEAD) ? __GFP_NORETRY : GFP_NOFS) | __GFP_NOWARN)
61
62
63 static inline int
64 xfs_buf_is_vmapped(
65         struct xfs_buf  *bp)
66 {
67         /*
68          * Return true if the buffer is vmapped.
69          *
70          * b_addr is null if the buffer is not mapped, but the code is clever
71          * enough to know it doesn't have to map a single page, so the check has
72          * to be both for b_addr and bp->b_page_count > 1.
73          */
74         return bp->b_addr && bp->b_page_count > 1;
75 }
76
77 static inline int
78 xfs_buf_vmap_len(
79         struct xfs_buf  *bp)
80 {
81         return (bp->b_page_count * PAGE_SIZE) - bp->b_offset;
82 }
83
84 /*
85  * When we mark a buffer stale, we remove the buffer from the LRU and clear the
86  * b_lru_ref count so that the buffer is freed immediately when the buffer
87  * reference count falls to zero. If the buffer is already on the LRU, we need
88  * to remove the reference that LRU holds on the buffer.
89  *
90  * This prevents build-up of stale buffers on the LRU.
91  */
92 void
93 xfs_buf_stale(
94         struct xfs_buf  *bp)
95 {
96         ASSERT(xfs_buf_islocked(bp));
97
98         bp->b_flags |= XBF_STALE;
99
100         /*
101          * Clear the delwri status so that a delwri queue walker will not
102          * flush this buffer to disk now that it is stale. The delwri queue has
103          * a reference to the buffer, so this is safe to do.
104          */
105         bp->b_flags &= ~_XBF_DELWRI_Q;
106
107         spin_lock(&bp->b_lock);
108         atomic_set(&bp->b_lru_ref, 0);
109         if (!(bp->b_state & XFS_BSTATE_DISPOSE) &&
110             (list_lru_del(&bp->b_target->bt_lru, &bp->b_lru)))
111                 atomic_dec(&bp->b_hold);
112
113         ASSERT(atomic_read(&bp->b_hold) >= 1);
114         spin_unlock(&bp->b_lock);
115 }
116
117 static int
118 xfs_buf_get_maps(
119         struct xfs_buf          *bp,
120         int                     map_count)
121 {
122         ASSERT(bp->b_maps == NULL);
123         bp->b_map_count = map_count;
124
125         if (map_count == 1) {
126                 bp->b_maps = &bp->__b_map;
127                 return 0;
128         }
129
130         bp->b_maps = kmem_zalloc(map_count * sizeof(struct xfs_buf_map),
131                                 KM_NOFS);
132         if (!bp->b_maps)
133                 return -ENOMEM;
134         return 0;
135 }
136
137 /*
138  *      Frees b_pages if it was allocated.
139  */
140 static void
141 xfs_buf_free_maps(
142         struct xfs_buf  *bp)
143 {
144         if (bp->b_maps != &bp->__b_map) {
145                 kmem_free(bp->b_maps);
146                 bp->b_maps = NULL;
147         }
148 }
149
150 struct xfs_buf *
151 _xfs_buf_alloc(
152         struct xfs_buftarg      *target,
153         struct xfs_buf_map      *map,
154         int                     nmaps,
155         xfs_buf_flags_t         flags)
156 {
157         struct xfs_buf          *bp;
158         int                     error;
159         int                     i;
160
161         bp = kmem_zone_zalloc(xfs_buf_zone, KM_NOFS);
162         if (unlikely(!bp))
163                 return NULL;
164
165         /*
166          * We don't want certain flags to appear in b_flags unless they are
167          * specifically set by later operations on the buffer.
168          */
169         flags &= ~(XBF_UNMAPPED | XBF_TRYLOCK | XBF_ASYNC | XBF_READ_AHEAD);
170
171         atomic_set(&bp->b_hold, 1);
172         atomic_set(&bp->b_lru_ref, 1);
173         init_completion(&bp->b_iowait);
174         INIT_LIST_HEAD(&bp->b_lru);
175         INIT_LIST_HEAD(&bp->b_list);
176         RB_CLEAR_NODE(&bp->b_rbnode);
177         sema_init(&bp->b_sema, 0); /* held, no waiters */
178         spin_lock_init(&bp->b_lock);
179         XB_SET_OWNER(bp);
180         bp->b_target = target;
181         bp->b_flags = flags;
182
183         /*
184          * Set length and io_length to the same value initially.
185          * I/O routines should use io_length, which will be the same in
186          * most cases but may be reset (e.g. XFS recovery).
187          */
188         error = xfs_buf_get_maps(bp, nmaps);
189         if (error)  {
190                 kmem_zone_free(xfs_buf_zone, bp);
191                 return NULL;
192         }
193
194         bp->b_bn = map[0].bm_bn;
195         bp->b_length = 0;
196         for (i = 0; i < nmaps; i++) {
197                 bp->b_maps[i].bm_bn = map[i].bm_bn;
198                 bp->b_maps[i].bm_len = map[i].bm_len;
199                 bp->b_length += map[i].bm_len;
200         }
201         bp->b_io_length = bp->b_length;
202
203         atomic_set(&bp->b_pin_count, 0);
204         init_waitqueue_head(&bp->b_waiters);
205
206         XFS_STATS_INC(xb_create);
207         trace_xfs_buf_init(bp, _RET_IP_);
208
209         return bp;
210 }
211
212 /*
213  *      Allocate a page array capable of holding a specified number
214  *      of pages, and point the page buf at it.
215  */
216 STATIC int
217 _xfs_buf_get_pages(
218         xfs_buf_t               *bp,
219         int                     page_count)
220 {
221         /* Make sure that we have a page list */
222         if (bp->b_pages == NULL) {
223                 bp->b_page_count = page_count;
224                 if (page_count <= XB_PAGES) {
225                         bp->b_pages = bp->b_page_array;
226                 } else {
227                         bp->b_pages = kmem_alloc(sizeof(struct page *) *
228                                                  page_count, KM_NOFS);
229                         if (bp->b_pages == NULL)
230                                 return -ENOMEM;
231                 }
232                 memset(bp->b_pages, 0, sizeof(struct page *) * page_count);
233         }
234         return 0;
235 }
236
237 /*
238  *      Frees b_pages if it was allocated.
239  */
240 STATIC void
241 _xfs_buf_free_pages(
242         xfs_buf_t       *bp)
243 {
244         if (bp->b_pages != bp->b_page_array) {
245                 kmem_free(bp->b_pages);
246                 bp->b_pages = NULL;
247         }
248 }
249
250 /*
251  *      Releases the specified buffer.
252  *
253  *      The modification state of any associated pages is left unchanged.
254  *      The buffer must not be on any hash - use xfs_buf_rele instead for
255  *      hashed and refcounted buffers
256  */
257 void
258 xfs_buf_free(
259         xfs_buf_t               *bp)
260 {
261         trace_xfs_buf_free(bp, _RET_IP_);
262
263         ASSERT(list_empty(&bp->b_lru));
264
265         if (bp->b_flags & _XBF_PAGES) {
266                 uint            i;
267
268                 if (xfs_buf_is_vmapped(bp))
269                         vm_unmap_ram(bp->b_addr - bp->b_offset,
270                                         bp->b_page_count);
271
272                 for (i = 0; i < bp->b_page_count; i++) {
273                         struct page     *page = bp->b_pages[i];
274
275                         __free_page(page);
276                 }
277         } else if (bp->b_flags & _XBF_KMEM)
278                 kmem_free(bp->b_addr);
279         _xfs_buf_free_pages(bp);
280         xfs_buf_free_maps(bp);
281         kmem_zone_free(xfs_buf_zone, bp);
282 }
283
284 /*
285  * Allocates all the pages for buffer in question and builds it's page list.
286  */
287 STATIC int
288 xfs_buf_allocate_memory(
289         xfs_buf_t               *bp,
290         uint                    flags)
291 {
292         size_t                  size;
293         size_t                  nbytes, offset;
294         gfp_t                   gfp_mask = xb_to_gfp(flags);
295         unsigned short          page_count, i;
296         xfs_off_t               start, end;
297         int                     error;
298
299         /*
300          * for buffers that are contained within a single page, just allocate
301          * the memory from the heap - there's no need for the complexity of
302          * page arrays to keep allocation down to order 0.
303          */
304         size = BBTOB(bp->b_length);
305         if (size < PAGE_SIZE) {
306                 bp->b_addr = kmem_alloc(size, KM_NOFS);
307                 if (!bp->b_addr) {
308                         /* low memory - use alloc_page loop instead */
309                         goto use_alloc_page;
310                 }
311
312                 if (((unsigned long)(bp->b_addr + size - 1) & PAGE_MASK) !=
313                     ((unsigned long)bp->b_addr & PAGE_MASK)) {
314                         /* b_addr spans two pages - use alloc_page instead */
315                         kmem_free(bp->b_addr);
316                         bp->b_addr = NULL;
317                         goto use_alloc_page;
318                 }
319                 bp->b_offset = offset_in_page(bp->b_addr);
320                 bp->b_pages = bp->b_page_array;
321                 bp->b_pages[0] = virt_to_page(bp->b_addr);
322                 bp->b_page_count = 1;
323                 bp->b_flags |= _XBF_KMEM;
324                 return 0;
325         }
326
327 use_alloc_page:
328         start = BBTOB(bp->b_maps[0].bm_bn) >> PAGE_SHIFT;
329         end = (BBTOB(bp->b_maps[0].bm_bn + bp->b_length) + PAGE_SIZE - 1)
330                                                                 >> PAGE_SHIFT;
331         page_count = end - start;
332         error = _xfs_buf_get_pages(bp, page_count);
333         if (unlikely(error))
334                 return error;
335
336         offset = bp->b_offset;
337         bp->b_flags |= _XBF_PAGES;
338
339         for (i = 0; i < bp->b_page_count; i++) {
340                 struct page     *page;
341                 uint            retries = 0;
342 retry:
343                 page = alloc_page(gfp_mask);
344                 if (unlikely(page == NULL)) {
345                         if (flags & XBF_READ_AHEAD) {
346                                 bp->b_page_count = i;
347                                 error = -ENOMEM;
348                                 goto out_free_pages;
349                         }
350
351                         /*
352                          * This could deadlock.
353                          *
354                          * But until all the XFS lowlevel code is revamped to
355                          * handle buffer allocation failures we can't do much.
356                          */
357                         if (!(++retries % 100))
358                                 xfs_err(NULL,
359                 "possible memory allocation deadlock in %s (mode:0x%x)",
360                                         __func__, gfp_mask);
361
362                         XFS_STATS_INC(xb_page_retries);
363                         congestion_wait(BLK_RW_ASYNC, HZ/50);
364                         goto retry;
365                 }
366
367                 XFS_STATS_INC(xb_page_found);
368
369                 nbytes = min_t(size_t, size, PAGE_SIZE - offset);
370                 size -= nbytes;
371                 bp->b_pages[i] = page;
372                 offset = 0;
373         }
374         return 0;
375
376 out_free_pages:
377         for (i = 0; i < bp->b_page_count; i++)
378                 __free_page(bp->b_pages[i]);
379         return error;
380 }
381
382 /*
383  *      Map buffer into kernel address-space if necessary.
384  */
385 STATIC int
386 _xfs_buf_map_pages(
387         xfs_buf_t               *bp,
388         uint                    flags)
389 {
390         ASSERT(bp->b_flags & _XBF_PAGES);
391         if (bp->b_page_count == 1) {
392                 /* A single page buffer is always mappable */
393                 bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
394         } else if (flags & XBF_UNMAPPED) {
395                 bp->b_addr = NULL;
396         } else {
397                 int retried = 0;
398                 unsigned noio_flag;
399
400                 /*
401                  * vm_map_ram() will allocate auxillary structures (e.g.
402                  * pagetables) with GFP_KERNEL, yet we are likely to be under
403                  * GFP_NOFS context here. Hence we need to tell memory reclaim
404                  * that we are in such a context via PF_MEMALLOC_NOIO to prevent
405                  * memory reclaim re-entering the filesystem here and
406                  * potentially deadlocking.
407                  */
408                 noio_flag = memalloc_noio_save();
409                 do {
410                         bp->b_addr = vm_map_ram(bp->b_pages, bp->b_page_count,
411                                                 -1, PAGE_KERNEL);
412                         if (bp->b_addr)
413                                 break;
414                         vm_unmap_aliases();
415                 } while (retried++ <= 1);
416                 memalloc_noio_restore(noio_flag);
417
418                 if (!bp->b_addr)
419                         return -ENOMEM;
420                 bp->b_addr += bp->b_offset;
421         }
422
423         return 0;
424 }
425
426 /*
427  *      Finding and Reading Buffers
428  */
429
430 /*
431  *      Look up, and creates if absent, a lockable buffer for
432  *      a given range of an inode.  The buffer is returned
433  *      locked. No I/O is implied by this call.
434  */
435 xfs_buf_t *
436 _xfs_buf_find(
437         struct xfs_buftarg      *btp,
438         struct xfs_buf_map      *map,
439         int                     nmaps,
440         xfs_buf_flags_t         flags,
441         xfs_buf_t               *new_bp)
442 {
443         size_t                  numbytes;
444         struct xfs_perag        *pag;
445         struct rb_node          **rbp;
446         struct rb_node          *parent;
447         xfs_buf_t               *bp;
448         xfs_daddr_t             blkno = map[0].bm_bn;
449         xfs_daddr_t             eofs;
450         int                     numblks = 0;
451         int                     i;
452
453         for (i = 0; i < nmaps; i++)
454                 numblks += map[i].bm_len;
455         numbytes = BBTOB(numblks);
456
457         /* Check for IOs smaller than the sector size / not sector aligned */
458         ASSERT(!(numbytes < btp->bt_meta_sectorsize));
459         ASSERT(!(BBTOB(blkno) & (xfs_off_t)btp->bt_meta_sectormask));
460
461         /*
462          * Corrupted block numbers can get through to here, unfortunately, so we
463          * have to check that the buffer falls within the filesystem bounds.
464          */
465         eofs = XFS_FSB_TO_BB(btp->bt_mount, btp->bt_mount->m_sb.sb_dblocks);
466         if (blkno >= eofs) {
467                 /*
468                  * XXX (dgc): we should really be returning -EFSCORRUPTED here,
469                  * but none of the higher level infrastructure supports
470                  * returning a specific error on buffer lookup failures.
471                  */
472                 xfs_alert(btp->bt_mount,
473                           "%s: Block out of range: block 0x%llx, EOFS 0x%llx ",
474                           __func__, blkno, eofs);
475                 WARN_ON(1);
476                 return NULL;
477         }
478
479         /* get tree root */
480         pag = xfs_perag_get(btp->bt_mount,
481                                 xfs_daddr_to_agno(btp->bt_mount, blkno));
482
483         /* walk tree */
484         spin_lock(&pag->pag_buf_lock);
485         rbp = &pag->pag_buf_tree.rb_node;
486         parent = NULL;
487         bp = NULL;
488         while (*rbp) {
489                 parent = *rbp;
490                 bp = rb_entry(parent, struct xfs_buf, b_rbnode);
491
492                 if (blkno < bp->b_bn)
493                         rbp = &(*rbp)->rb_left;
494                 else if (blkno > bp->b_bn)
495                         rbp = &(*rbp)->rb_right;
496                 else {
497                         /*
498                          * found a block number match. If the range doesn't
499                          * match, the only way this is allowed is if the buffer
500                          * in the cache is stale and the transaction that made
501                          * it stale has not yet committed. i.e. we are
502                          * reallocating a busy extent. Skip this buffer and
503                          * continue searching to the right for an exact match.
504                          */
505                         if (bp->b_length != numblks) {
506                                 ASSERT(bp->b_flags & XBF_STALE);
507                                 rbp = &(*rbp)->rb_right;
508                                 continue;
509                         }
510                         atomic_inc(&bp->b_hold);
511                         goto found;
512                 }
513         }
514
515         /* No match found */
516         if (new_bp) {
517                 rb_link_node(&new_bp->b_rbnode, parent, rbp);
518                 rb_insert_color(&new_bp->b_rbnode, &pag->pag_buf_tree);
519                 /* the buffer keeps the perag reference until it is freed */
520                 new_bp->b_pag = pag;
521                 spin_unlock(&pag->pag_buf_lock);
522         } else {
523                 XFS_STATS_INC(xb_miss_locked);
524                 spin_unlock(&pag->pag_buf_lock);
525                 xfs_perag_put(pag);
526         }
527         return new_bp;
528
529 found:
530         spin_unlock(&pag->pag_buf_lock);
531         xfs_perag_put(pag);
532
533         if (!xfs_buf_trylock(bp)) {
534                 if (flags & XBF_TRYLOCK) {
535                         xfs_buf_rele(bp);
536                         XFS_STATS_INC(xb_busy_locked);
537                         return NULL;
538                 }
539                 xfs_buf_lock(bp);
540                 XFS_STATS_INC(xb_get_locked_waited);
541         }
542
543         /*
544          * if the buffer is stale, clear all the external state associated with
545          * it. We need to keep flags such as how we allocated the buffer memory
546          * intact here.
547          */
548         if (bp->b_flags & XBF_STALE) {
549                 ASSERT((bp->b_flags & _XBF_DELWRI_Q) == 0);
550                 ASSERT(bp->b_iodone == NULL);
551                 bp->b_flags &= _XBF_KMEM | _XBF_PAGES;
552                 bp->b_ops = NULL;
553         }
554
555         trace_xfs_buf_find(bp, flags, _RET_IP_);
556         XFS_STATS_INC(xb_get_locked);
557         return bp;
558 }
559
560 /*
561  * Assembles a buffer covering the specified range. The code is optimised for
562  * cache hits, as metadata intensive workloads will see 3 orders of magnitude
563  * more hits than misses.
564  */
565 struct xfs_buf *
566 xfs_buf_get_map(
567         struct xfs_buftarg      *target,
568         struct xfs_buf_map      *map,
569         int                     nmaps,
570         xfs_buf_flags_t         flags)
571 {
572         struct xfs_buf          *bp;
573         struct xfs_buf          *new_bp;
574         int                     error = 0;
575
576         bp = _xfs_buf_find(target, map, nmaps, flags, NULL);
577         if (likely(bp))
578                 goto found;
579
580         new_bp = _xfs_buf_alloc(target, map, nmaps, flags);
581         if (unlikely(!new_bp))
582                 return NULL;
583
584         error = xfs_buf_allocate_memory(new_bp, flags);
585         if (error) {
586                 xfs_buf_free(new_bp);
587                 return NULL;
588         }
589
590         bp = _xfs_buf_find(target, map, nmaps, flags, new_bp);
591         if (!bp) {
592                 xfs_buf_free(new_bp);
593                 return NULL;
594         }
595
596         if (bp != new_bp)
597                 xfs_buf_free(new_bp);
598
599 found:
600         if (!bp->b_addr) {
601                 error = _xfs_buf_map_pages(bp, flags);
602                 if (unlikely(error)) {
603                         xfs_warn(target->bt_mount,
604                                 "%s: failed to map pagesn", __func__);
605                         xfs_buf_relse(bp);
606                         return NULL;
607                 }
608         }
609
610         XFS_STATS_INC(xb_get);
611         trace_xfs_buf_get(bp, flags, _RET_IP_);
612         return bp;
613 }
614
615 STATIC int
616 _xfs_buf_read(
617         xfs_buf_t               *bp,
618         xfs_buf_flags_t         flags)
619 {
620         ASSERT(!(flags & XBF_WRITE));
621         ASSERT(bp->b_maps[0].bm_bn != XFS_BUF_DADDR_NULL);
622
623         bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_READ_AHEAD);
624         bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | XBF_READ_AHEAD);
625
626         if (flags & XBF_ASYNC) {
627                 xfs_buf_submit(bp);
628                 return 0;
629         }
630         return xfs_buf_submit_wait(bp);
631 }
632
633 xfs_buf_t *
634 xfs_buf_read_map(
635         struct xfs_buftarg      *target,
636         struct xfs_buf_map      *map,
637         int                     nmaps,
638         xfs_buf_flags_t         flags,
639         const struct xfs_buf_ops *ops)
640 {
641         struct xfs_buf          *bp;
642
643         flags |= XBF_READ;
644
645         bp = xfs_buf_get_map(target, map, nmaps, flags);
646         if (bp) {
647                 trace_xfs_buf_read(bp, flags, _RET_IP_);
648
649                 if (!XFS_BUF_ISDONE(bp)) {
650                         XFS_STATS_INC(xb_get_read);
651                         bp->b_ops = ops;
652                         _xfs_buf_read(bp, flags);
653                 } else if (flags & XBF_ASYNC) {
654                         /*
655                          * Read ahead call which is already satisfied,
656                          * drop the buffer
657                          */
658                         xfs_buf_relse(bp);
659                         return NULL;
660                 } else {
661                         /* We do not want read in the flags */
662                         bp->b_flags &= ~XBF_READ;
663                 }
664         }
665
666         return bp;
667 }
668
669 /*
670  *      If we are not low on memory then do the readahead in a deadlock
671  *      safe manner.
672  */
673 void
674 xfs_buf_readahead_map(
675         struct xfs_buftarg      *target,
676         struct xfs_buf_map      *map,
677         int                     nmaps,
678         const struct xfs_buf_ops *ops)
679 {
680         if (bdi_read_congested(target->bt_bdi))
681                 return;
682
683         xfs_buf_read_map(target, map, nmaps,
684                      XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD, ops);
685 }
686
687 /*
688  * Read an uncached buffer from disk. Allocates and returns a locked
689  * buffer containing the disk contents or nothing.
690  */
691 struct xfs_buf *
692 xfs_buf_read_uncached(
693         struct xfs_buftarg      *target,
694         xfs_daddr_t             daddr,
695         size_t                  numblks,
696         int                     flags,
697         const struct xfs_buf_ops *ops)
698 {
699         struct xfs_buf          *bp;
700
701         bp = xfs_buf_get_uncached(target, numblks, flags);
702         if (!bp)
703                 return NULL;
704
705         /* set up the buffer for a read IO */
706         ASSERT(bp->b_map_count == 1);
707         bp->b_bn = daddr;
708         bp->b_maps[0].bm_bn = daddr;
709         bp->b_flags |= XBF_READ;
710         bp->b_ops = ops;
711
712         xfs_buf_submit_wait(bp);
713         return bp;
714 }
715
716 /*
717  * Return a buffer allocated as an empty buffer and associated to external
718  * memory via xfs_buf_associate_memory() back to it's empty state.
719  */
720 void
721 xfs_buf_set_empty(
722         struct xfs_buf          *bp,
723         size_t                  numblks)
724 {
725         if (bp->b_pages)
726                 _xfs_buf_free_pages(bp);
727
728         bp->b_pages = NULL;
729         bp->b_page_count = 0;
730         bp->b_addr = NULL;
731         bp->b_length = numblks;
732         bp->b_io_length = numblks;
733
734         ASSERT(bp->b_map_count == 1);
735         bp->b_bn = XFS_BUF_DADDR_NULL;
736         bp->b_maps[0].bm_bn = XFS_BUF_DADDR_NULL;
737         bp->b_maps[0].bm_len = bp->b_length;
738 }
739
740 static inline struct page *
741 mem_to_page(
742         void                    *addr)
743 {
744         if ((!is_vmalloc_addr(addr))) {
745                 return virt_to_page(addr);
746         } else {
747                 return vmalloc_to_page(addr);
748         }
749 }
750
751 int
752 xfs_buf_associate_memory(
753         xfs_buf_t               *bp,
754         void                    *mem,
755         size_t                  len)
756 {
757         int                     rval;
758         int                     i = 0;
759         unsigned long           pageaddr;
760         unsigned long           offset;
761         size_t                  buflen;
762         int                     page_count;
763
764         pageaddr = (unsigned long)mem & PAGE_MASK;
765         offset = (unsigned long)mem - pageaddr;
766         buflen = PAGE_ALIGN(len + offset);
767         page_count = buflen >> PAGE_SHIFT;
768
769         /* Free any previous set of page pointers */
770         if (bp->b_pages)
771                 _xfs_buf_free_pages(bp);
772
773         bp->b_pages = NULL;
774         bp->b_addr = mem;
775
776         rval = _xfs_buf_get_pages(bp, page_count);
777         if (rval)
778                 return rval;
779
780         bp->b_offset = offset;
781
782         for (i = 0; i < bp->b_page_count; i++) {
783                 bp->b_pages[i] = mem_to_page((void *)pageaddr);
784                 pageaddr += PAGE_SIZE;
785         }
786
787         bp->b_io_length = BTOBB(len);
788         bp->b_length = BTOBB(buflen);
789
790         return 0;
791 }
792
793 xfs_buf_t *
794 xfs_buf_get_uncached(
795         struct xfs_buftarg      *target,
796         size_t                  numblks,
797         int                     flags)
798 {
799         unsigned long           page_count;
800         int                     error, i;
801         struct xfs_buf          *bp;
802         DEFINE_SINGLE_BUF_MAP(map, XFS_BUF_DADDR_NULL, numblks);
803
804         bp = _xfs_buf_alloc(target, &map, 1, 0);
805         if (unlikely(bp == NULL))
806                 goto fail;
807
808         page_count = PAGE_ALIGN(numblks << BBSHIFT) >> PAGE_SHIFT;
809         error = _xfs_buf_get_pages(bp, page_count);
810         if (error)
811                 goto fail_free_buf;
812
813         for (i = 0; i < page_count; i++) {
814                 bp->b_pages[i] = alloc_page(xb_to_gfp(flags));
815                 if (!bp->b_pages[i])
816                         goto fail_free_mem;
817         }
818         bp->b_flags |= _XBF_PAGES;
819
820         error = _xfs_buf_map_pages(bp, 0);
821         if (unlikely(error)) {
822                 xfs_warn(target->bt_mount,
823                         "%s: failed to map pages", __func__);
824                 goto fail_free_mem;
825         }
826
827         trace_xfs_buf_get_uncached(bp, _RET_IP_);
828         return bp;
829
830  fail_free_mem:
831         while (--i >= 0)
832                 __free_page(bp->b_pages[i]);
833         _xfs_buf_free_pages(bp);
834  fail_free_buf:
835         xfs_buf_free_maps(bp);
836         kmem_zone_free(xfs_buf_zone, bp);
837  fail:
838         return NULL;
839 }
840
841 /*
842  *      Increment reference count on buffer, to hold the buffer concurrently
843  *      with another thread which may release (free) the buffer asynchronously.
844  *      Must hold the buffer already to call this function.
845  */
846 void
847 xfs_buf_hold(
848         xfs_buf_t               *bp)
849 {
850         trace_xfs_buf_hold(bp, _RET_IP_);
851         atomic_inc(&bp->b_hold);
852 }
853
854 /*
855  *      Releases a hold on the specified buffer.  If the
856  *      the hold count is 1, calls xfs_buf_free.
857  */
858 void
859 xfs_buf_rele(
860         xfs_buf_t               *bp)
861 {
862         struct xfs_perag        *pag = bp->b_pag;
863
864         trace_xfs_buf_rele(bp, _RET_IP_);
865
866         if (!pag) {
867                 ASSERT(list_empty(&bp->b_lru));
868                 ASSERT(RB_EMPTY_NODE(&bp->b_rbnode));
869                 if (atomic_dec_and_test(&bp->b_hold))
870                         xfs_buf_free(bp);
871                 return;
872         }
873
874         ASSERT(!RB_EMPTY_NODE(&bp->b_rbnode));
875
876         ASSERT(atomic_read(&bp->b_hold) > 0);
877         if (atomic_dec_and_lock(&bp->b_hold, &pag->pag_buf_lock)) {
878                 spin_lock(&bp->b_lock);
879                 if (!(bp->b_flags & XBF_STALE) && atomic_read(&bp->b_lru_ref)) {
880                         /*
881                          * If the buffer is added to the LRU take a new
882                          * reference to the buffer for the LRU and clear the
883                          * (now stale) dispose list state flag
884                          */
885                         if (list_lru_add(&bp->b_target->bt_lru, &bp->b_lru)) {
886                                 bp->b_state &= ~XFS_BSTATE_DISPOSE;
887                                 atomic_inc(&bp->b_hold);
888                         }
889                         spin_unlock(&bp->b_lock);
890                         spin_unlock(&pag->pag_buf_lock);
891                 } else {
892                         /*
893                          * most of the time buffers will already be removed from
894                          * the LRU, so optimise that case by checking for the
895                          * XFS_BSTATE_DISPOSE flag indicating the last list the
896                          * buffer was on was the disposal list
897                          */
898                         if (!(bp->b_state & XFS_BSTATE_DISPOSE)) {
899                                 list_lru_del(&bp->b_target->bt_lru, &bp->b_lru);
900                         } else {
901                                 ASSERT(list_empty(&bp->b_lru));
902                         }
903                         spin_unlock(&bp->b_lock);
904
905                         ASSERT(!(bp->b_flags & _XBF_DELWRI_Q));
906                         rb_erase(&bp->b_rbnode, &pag->pag_buf_tree);
907                         spin_unlock(&pag->pag_buf_lock);
908                         xfs_perag_put(pag);
909                         xfs_buf_free(bp);
910                 }
911         }
912 }
913
914
915 /*
916  *      Lock a buffer object, if it is not already locked.
917  *
918  *      If we come across a stale, pinned, locked buffer, we know that we are
919  *      being asked to lock a buffer that has been reallocated. Because it is
920  *      pinned, we know that the log has not been pushed to disk and hence it
921  *      will still be locked.  Rather than continuing to have trylock attempts
922  *      fail until someone else pushes the log, push it ourselves before
923  *      returning.  This means that the xfsaild will not get stuck trying
924  *      to push on stale inode buffers.
925  */
926 int
927 xfs_buf_trylock(
928         struct xfs_buf          *bp)
929 {
930         int                     locked;
931
932         locked = down_trylock(&bp->b_sema) == 0;
933         if (locked)
934                 XB_SET_OWNER(bp);
935
936         trace_xfs_buf_trylock(bp, _RET_IP_);
937         return locked;
938 }
939
940 /*
941  *      Lock a buffer object.
942  *
943  *      If we come across a stale, pinned, locked buffer, we know that we
944  *      are being asked to lock a buffer that has been reallocated. Because
945  *      it is pinned, we know that the log has not been pushed to disk and
946  *      hence it will still be locked. Rather than sleeping until someone
947  *      else pushes the log, push it ourselves before trying to get the lock.
948  */
949 void
950 xfs_buf_lock(
951         struct xfs_buf          *bp)
952 {
953         trace_xfs_buf_lock(bp, _RET_IP_);
954
955         if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE))
956                 xfs_log_force(bp->b_target->bt_mount, 0);
957         down(&bp->b_sema);
958         XB_SET_OWNER(bp);
959
960         trace_xfs_buf_lock_done(bp, _RET_IP_);
961 }
962
963 void
964 xfs_buf_unlock(
965         struct xfs_buf          *bp)
966 {
967         XB_CLEAR_OWNER(bp);
968         up(&bp->b_sema);
969
970         trace_xfs_buf_unlock(bp, _RET_IP_);
971 }
972
973 STATIC void
974 xfs_buf_wait_unpin(
975         xfs_buf_t               *bp)
976 {
977         DECLARE_WAITQUEUE       (wait, current);
978
979         if (atomic_read(&bp->b_pin_count) == 0)
980                 return;
981
982         add_wait_queue(&bp->b_waiters, &wait);
983         for (;;) {
984                 set_current_state(TASK_UNINTERRUPTIBLE);
985                 if (atomic_read(&bp->b_pin_count) == 0)
986                         break;
987                 io_schedule();
988         }
989         remove_wait_queue(&bp->b_waiters, &wait);
990         set_current_state(TASK_RUNNING);
991 }
992
993 /*
994  *      Buffer Utility Routines
995  */
996
997 void
998 xfs_buf_ioend(
999         struct xfs_buf  *bp)
1000 {
1001         bool            read = bp->b_flags & XBF_READ;
1002
1003         trace_xfs_buf_iodone(bp, _RET_IP_);
1004
1005         bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD);
1006
1007         /*
1008          * Pull in IO completion errors now. We are guaranteed to be running
1009          * single threaded, so we don't need the lock to read b_io_error.
1010          */
1011         if (!bp->b_error && bp->b_io_error)
1012                 xfs_buf_ioerror(bp, bp->b_io_error);
1013
1014         /* Only validate buffers that were read without errors */
1015         if (read && !bp->b_error && bp->b_ops) {
1016                 ASSERT(!bp->b_iodone);
1017                 bp->b_ops->verify_read(bp);
1018         }
1019
1020         if (!bp->b_error)
1021                 bp->b_flags |= XBF_DONE;
1022
1023         if (bp->b_iodone)
1024                 (*(bp->b_iodone))(bp);
1025         else if (bp->b_flags & XBF_ASYNC)
1026                 xfs_buf_relse(bp);
1027         else
1028                 complete(&bp->b_iowait);
1029 }
1030
1031 static void
1032 xfs_buf_ioend_work(
1033         struct work_struct      *work)
1034 {
1035         struct xfs_buf          *bp =
1036                 container_of(work, xfs_buf_t, b_iodone_work);
1037
1038         xfs_buf_ioend(bp);
1039 }
1040
1041 void
1042 xfs_buf_ioend_async(
1043         struct xfs_buf  *bp)
1044 {
1045         INIT_WORK(&bp->b_iodone_work, xfs_buf_ioend_work);
1046         queue_work(xfslogd_workqueue, &bp->b_iodone_work);
1047 }
1048
1049 void
1050 xfs_buf_ioerror(
1051         xfs_buf_t               *bp,
1052         int                     error)
1053 {
1054         ASSERT(error <= 0 && error >= -1000);
1055         bp->b_error = error;
1056         trace_xfs_buf_ioerror(bp, error, _RET_IP_);
1057 }
1058
1059 void
1060 xfs_buf_ioerror_alert(
1061         struct xfs_buf          *bp,
1062         const char              *func)
1063 {
1064         xfs_alert(bp->b_target->bt_mount,
1065 "metadata I/O error: block 0x%llx (\"%s\") error %d numblks %d",
1066                 (__uint64_t)XFS_BUF_ADDR(bp), func, -bp->b_error, bp->b_length);
1067 }
1068
1069 int
1070 xfs_bwrite(
1071         struct xfs_buf          *bp)
1072 {
1073         int                     error;
1074
1075         ASSERT(xfs_buf_islocked(bp));
1076
1077         bp->b_flags |= XBF_WRITE;
1078         bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q |
1079                          XBF_WRITE_FAIL | XBF_DONE);
1080
1081         error = xfs_buf_submit_wait(bp);
1082         if (error) {
1083                 xfs_force_shutdown(bp->b_target->bt_mount,
1084                                    SHUTDOWN_META_IO_ERROR);
1085         }
1086         return error;
1087 }
1088
1089 STATIC void
1090 xfs_buf_bio_end_io(
1091         struct bio              *bio,
1092         int                     error)
1093 {
1094         xfs_buf_t               *bp = (xfs_buf_t *)bio->bi_private;
1095
1096         /*
1097          * don't overwrite existing errors - otherwise we can lose errors on
1098          * buffers that require multiple bios to complete.
1099          */
1100         if (error) {
1101                 spin_lock(&bp->b_lock);
1102                 if (!bp->b_io_error)
1103                         bp->b_io_error = error;
1104                 spin_unlock(&bp->b_lock);
1105         }
1106
1107         if (!bp->b_error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ))
1108                 invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp));
1109
1110         if (atomic_dec_and_test(&bp->b_io_remaining) == 1)
1111                 xfs_buf_ioend_async(bp);
1112         bio_put(bio);
1113 }
1114
1115 static void
1116 xfs_buf_ioapply_map(
1117         struct xfs_buf  *bp,
1118         int             map,
1119         int             *buf_offset,
1120         int             *count,
1121         int             rw)
1122 {
1123         int             page_index;
1124         int             total_nr_pages = bp->b_page_count;
1125         int             nr_pages;
1126         struct bio      *bio;
1127         sector_t        sector =  bp->b_maps[map].bm_bn;
1128         int             size;
1129         int             offset;
1130
1131         total_nr_pages = bp->b_page_count;
1132
1133         /* skip the pages in the buffer before the start offset */
1134         page_index = 0;
1135         offset = *buf_offset;
1136         while (offset >= PAGE_SIZE) {
1137                 page_index++;
1138                 offset -= PAGE_SIZE;
1139         }
1140
1141         /*
1142          * Limit the IO size to the length of the current vector, and update the
1143          * remaining IO count for the next time around.
1144          */
1145         size = min_t(int, BBTOB(bp->b_maps[map].bm_len), *count);
1146         *count -= size;
1147         *buf_offset += size;
1148
1149 next_chunk:
1150         atomic_inc(&bp->b_io_remaining);
1151         nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT);
1152         if (nr_pages > total_nr_pages)
1153                 nr_pages = total_nr_pages;
1154
1155         bio = bio_alloc(GFP_NOIO, nr_pages);
1156         bio->bi_bdev = bp->b_target->bt_bdev;
1157         bio->bi_iter.bi_sector = sector;
1158         bio->bi_end_io = xfs_buf_bio_end_io;
1159         bio->bi_private = bp;
1160
1161
1162         for (; size && nr_pages; nr_pages--, page_index++) {
1163                 int     rbytes, nbytes = PAGE_SIZE - offset;
1164
1165                 if (nbytes > size)
1166                         nbytes = size;
1167
1168                 rbytes = bio_add_page(bio, bp->b_pages[page_index], nbytes,
1169                                       offset);
1170                 if (rbytes < nbytes)
1171                         break;
1172
1173                 offset = 0;
1174                 sector += BTOBB(nbytes);
1175                 size -= nbytes;
1176                 total_nr_pages--;
1177         }
1178
1179         if (likely(bio->bi_iter.bi_size)) {
1180                 if (xfs_buf_is_vmapped(bp)) {
1181                         flush_kernel_vmap_range(bp->b_addr,
1182                                                 xfs_buf_vmap_len(bp));
1183                 }
1184                 submit_bio(rw, bio);
1185                 if (size)
1186                         goto next_chunk;
1187         } else {
1188                 /*
1189                  * This is guaranteed not to be the last io reference count
1190                  * because the caller (xfs_buf_submit) holds a count itself.
1191                  */
1192                 atomic_dec(&bp->b_io_remaining);
1193                 xfs_buf_ioerror(bp, -EIO);
1194                 bio_put(bio);
1195         }
1196
1197 }
1198
1199 STATIC void
1200 _xfs_buf_ioapply(
1201         struct xfs_buf  *bp)
1202 {
1203         struct blk_plug plug;
1204         int             rw;
1205         int             offset;
1206         int             size;
1207         int             i;
1208
1209         /*
1210          * Make sure we capture only current IO errors rather than stale errors
1211          * left over from previous use of the buffer (e.g. failed readahead).
1212          */
1213         bp->b_error = 0;
1214
1215         if (bp->b_flags & XBF_WRITE) {
1216                 if (bp->b_flags & XBF_SYNCIO)
1217                         rw = WRITE_SYNC;
1218                 else
1219                         rw = WRITE;
1220                 if (bp->b_flags & XBF_FUA)
1221                         rw |= REQ_FUA;
1222                 if (bp->b_flags & XBF_FLUSH)
1223                         rw |= REQ_FLUSH;
1224
1225                 /*
1226                  * Run the write verifier callback function if it exists. If
1227                  * this function fails it will mark the buffer with an error and
1228                  * the IO should not be dispatched.
1229                  */
1230                 if (bp->b_ops) {
1231                         bp->b_ops->verify_write(bp);
1232                         if (bp->b_error) {
1233                                 xfs_force_shutdown(bp->b_target->bt_mount,
1234                                                    SHUTDOWN_CORRUPT_INCORE);
1235                                 return;
1236                         }
1237                 } else if (bp->b_bn != XFS_BUF_DADDR_NULL) {
1238                         struct xfs_mount *mp = bp->b_target->bt_mount;
1239
1240                         /*
1241                          * non-crc filesystems don't attach verifiers during
1242                          * log recovery, so don't warn for such filesystems.
1243                          */
1244                         if (xfs_sb_version_hascrc(&mp->m_sb)) {
1245                                 xfs_warn(mp,
1246                                         "%s: no ops on block 0x%llx/0x%x",
1247                                         __func__, bp->b_bn, bp->b_length);
1248                                 xfs_hex_dump(bp->b_addr, 64);
1249                                 dump_stack();
1250                         }
1251                 }
1252         } else if (bp->b_flags & XBF_READ_AHEAD) {
1253                 rw = READA;
1254         } else {
1255                 rw = READ;
1256         }
1257
1258         /* we only use the buffer cache for meta-data */
1259         rw |= REQ_META;
1260
1261         /*
1262          * Walk all the vectors issuing IO on them. Set up the initial offset
1263          * into the buffer and the desired IO size before we start -
1264          * _xfs_buf_ioapply_vec() will modify them appropriately for each
1265          * subsequent call.
1266          */
1267         offset = bp->b_offset;
1268         size = BBTOB(bp->b_io_length);
1269         blk_start_plug(&plug);
1270         for (i = 0; i < bp->b_map_count; i++) {
1271                 xfs_buf_ioapply_map(bp, i, &offset, &size, rw);
1272                 if (bp->b_error)
1273                         break;
1274                 if (size <= 0)
1275                         break;  /* all done */
1276         }
1277         blk_finish_plug(&plug);
1278 }
1279
1280 /*
1281  * Asynchronous IO submission path. This transfers the buffer lock ownership and
1282  * the current reference to the IO. It is not safe to reference the buffer after
1283  * a call to this function unless the caller holds an additional reference
1284  * itself.
1285  */
1286 void
1287 xfs_buf_submit(
1288         struct xfs_buf  *bp)
1289 {
1290         trace_xfs_buf_submit(bp, _RET_IP_);
1291
1292         ASSERT(!(bp->b_flags & _XBF_DELWRI_Q));
1293         ASSERT(bp->b_flags & XBF_ASYNC);
1294
1295         /* on shutdown we stale and complete the buffer immediately */
1296         if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
1297                 xfs_buf_ioerror(bp, -EIO);
1298                 bp->b_flags &= ~XBF_DONE;
1299                 xfs_buf_stale(bp);
1300                 xfs_buf_ioend(bp);
1301                 return;
1302         }
1303
1304         if (bp->b_flags & XBF_WRITE)
1305                 xfs_buf_wait_unpin(bp);
1306
1307         /* clear the internal error state to avoid spurious errors */
1308         bp->b_io_error = 0;
1309
1310         /*
1311          * The caller's reference is released during I/O completion.
1312          * This occurs some time after the last b_io_remaining reference is
1313          * released, so after we drop our Io reference we have to have some
1314          * other reference to ensure the buffer doesn't go away from underneath
1315          * us. Take a direct reference to ensure we have safe access to the
1316          * buffer until we are finished with it.
1317          */
1318         xfs_buf_hold(bp);
1319
1320         /*
1321          * Set the count to 1 initially, this will stop an I/O completion
1322          * callout which happens before we have started all the I/O from calling
1323          * xfs_buf_ioend too early.
1324          */
1325         atomic_set(&bp->b_io_remaining, 1);
1326         _xfs_buf_ioapply(bp);
1327
1328         /*
1329          * If _xfs_buf_ioapply failed, we can get back here with only the IO
1330          * reference we took above. If we drop it to zero, run completion so
1331          * that we don't return to the caller with completion still pending.
1332          */
1333         if (atomic_dec_and_test(&bp->b_io_remaining) == 1) {
1334                 if (bp->b_error)
1335                         xfs_buf_ioend(bp);
1336                 else
1337                         xfs_buf_ioend_async(bp);
1338         }
1339
1340         xfs_buf_rele(bp);
1341         /* Note: it is not safe to reference bp now we've dropped our ref */
1342 }
1343
1344 /*
1345  * Synchronous buffer IO submission path, read or write.
1346  */
1347 int
1348 xfs_buf_submit_wait(
1349         struct xfs_buf  *bp)
1350 {
1351         int             error;
1352
1353         trace_xfs_buf_submit_wait(bp, _RET_IP_);
1354
1355         ASSERT(!(bp->b_flags & (_XBF_DELWRI_Q | XBF_ASYNC)));
1356
1357         if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
1358                 xfs_buf_ioerror(bp, -EIO);
1359                 xfs_buf_stale(bp);
1360                 bp->b_flags &= ~XBF_DONE;
1361                 return -EIO;
1362         }
1363
1364         if (bp->b_flags & XBF_WRITE)
1365                 xfs_buf_wait_unpin(bp);
1366
1367         /* clear the internal error state to avoid spurious errors */
1368         bp->b_io_error = 0;
1369
1370         /*
1371          * For synchronous IO, the IO does not inherit the submitters reference
1372          * count, nor the buffer lock. Hence we cannot release the reference we
1373          * are about to take until we've waited for all IO completion to occur,
1374          * including any xfs_buf_ioend_async() work that may be pending.
1375          */
1376         xfs_buf_hold(bp);
1377
1378         /*
1379          * Set the count to 1 initially, this will stop an I/O completion
1380          * callout which happens before we have started all the I/O from calling
1381          * xfs_buf_ioend too early.
1382          */
1383         atomic_set(&bp->b_io_remaining, 1);
1384         _xfs_buf_ioapply(bp);
1385
1386         /*
1387          * make sure we run completion synchronously if it raced with us and is
1388          * already complete.
1389          */
1390         if (atomic_dec_and_test(&bp->b_io_remaining) == 1)
1391                 xfs_buf_ioend(bp);
1392
1393         /* wait for completion before gathering the error from the buffer */
1394         trace_xfs_buf_iowait(bp, _RET_IP_);
1395         wait_for_completion(&bp->b_iowait);
1396         trace_xfs_buf_iowait_done(bp, _RET_IP_);
1397         error = bp->b_error;
1398
1399         /*
1400          * all done now, we can release the hold that keeps the buffer
1401          * referenced for the entire IO.
1402          */
1403         xfs_buf_rele(bp);
1404         return error;
1405 }
1406
1407 xfs_caddr_t
1408 xfs_buf_offset(
1409         xfs_buf_t               *bp,
1410         size_t                  offset)
1411 {
1412         struct page             *page;
1413
1414         if (bp->b_addr)
1415                 return bp->b_addr + offset;
1416
1417         offset += bp->b_offset;
1418         page = bp->b_pages[offset >> PAGE_SHIFT];
1419         return (xfs_caddr_t)page_address(page) + (offset & (PAGE_SIZE-1));
1420 }
1421
1422 /*
1423  *      Move data into or out of a buffer.
1424  */
1425 void
1426 xfs_buf_iomove(
1427         xfs_buf_t               *bp,    /* buffer to process            */
1428         size_t                  boff,   /* starting buffer offset       */
1429         size_t                  bsize,  /* length to copy               */
1430         void                    *data,  /* data address                 */
1431         xfs_buf_rw_t            mode)   /* read/write/zero flag         */
1432 {
1433         size_t                  bend;
1434
1435         bend = boff + bsize;
1436         while (boff < bend) {
1437                 struct page     *page;
1438                 int             page_index, page_offset, csize;
1439
1440                 page_index = (boff + bp->b_offset) >> PAGE_SHIFT;
1441                 page_offset = (boff + bp->b_offset) & ~PAGE_MASK;
1442                 page = bp->b_pages[page_index];
1443                 csize = min_t(size_t, PAGE_SIZE - page_offset,
1444                                       BBTOB(bp->b_io_length) - boff);
1445
1446                 ASSERT((csize + page_offset) <= PAGE_SIZE);
1447
1448                 switch (mode) {
1449                 case XBRW_ZERO:
1450                         memset(page_address(page) + page_offset, 0, csize);
1451                         break;
1452                 case XBRW_READ:
1453                         memcpy(data, page_address(page) + page_offset, csize);
1454                         break;
1455                 case XBRW_WRITE:
1456                         memcpy(page_address(page) + page_offset, data, csize);
1457                 }
1458
1459                 boff += csize;
1460                 data += csize;
1461         }
1462 }
1463
1464 /*
1465  *      Handling of buffer targets (buftargs).
1466  */
1467
1468 /*
1469  * Wait for any bufs with callbacks that have been submitted but have not yet
1470  * returned. These buffers will have an elevated hold count, so wait on those
1471  * while freeing all the buffers only held by the LRU.
1472  */
1473 static enum lru_status
1474 xfs_buftarg_wait_rele(
1475         struct list_head        *item,
1476         spinlock_t              *lru_lock,
1477         void                    *arg)
1478
1479 {
1480         struct xfs_buf          *bp = container_of(item, struct xfs_buf, b_lru);
1481         struct list_head        *dispose = arg;
1482
1483         if (atomic_read(&bp->b_hold) > 1) {
1484                 /* need to wait, so skip it this pass */
1485                 trace_xfs_buf_wait_buftarg(bp, _RET_IP_);
1486                 return LRU_SKIP;
1487         }
1488         if (!spin_trylock(&bp->b_lock))
1489                 return LRU_SKIP;
1490
1491         /*
1492          * clear the LRU reference count so the buffer doesn't get
1493          * ignored in xfs_buf_rele().
1494          */
1495         atomic_set(&bp->b_lru_ref, 0);
1496         bp->b_state |= XFS_BSTATE_DISPOSE;
1497         list_move(item, dispose);
1498         spin_unlock(&bp->b_lock);
1499         return LRU_REMOVED;
1500 }
1501
1502 void
1503 xfs_wait_buftarg(
1504         struct xfs_buftarg      *btp)
1505 {
1506         LIST_HEAD(dispose);
1507         int loop = 0;
1508
1509         /* loop until there is nothing left on the lru list. */
1510         while (list_lru_count(&btp->bt_lru)) {
1511                 list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele,
1512                               &dispose, LONG_MAX);
1513
1514                 while (!list_empty(&dispose)) {
1515                         struct xfs_buf *bp;
1516                         bp = list_first_entry(&dispose, struct xfs_buf, b_lru);
1517                         list_del_init(&bp->b_lru);
1518                         if (bp->b_flags & XBF_WRITE_FAIL) {
1519                                 xfs_alert(btp->bt_mount,
1520 "Corruption Alert: Buffer at block 0x%llx had permanent write failures!\n"
1521 "Please run xfs_repair to determine the extent of the problem.",
1522                                         (long long)bp->b_bn);
1523                         }
1524                         xfs_buf_rele(bp);
1525                 }
1526                 if (loop++ != 0)
1527                         delay(100);
1528         }
1529 }
1530
1531 static enum lru_status
1532 xfs_buftarg_isolate(
1533         struct list_head        *item,
1534         spinlock_t              *lru_lock,
1535         void                    *arg)
1536 {
1537         struct xfs_buf          *bp = container_of(item, struct xfs_buf, b_lru);
1538         struct list_head        *dispose = arg;
1539
1540         /*
1541          * we are inverting the lru lock/bp->b_lock here, so use a trylock.
1542          * If we fail to get the lock, just skip it.
1543          */
1544         if (!spin_trylock(&bp->b_lock))
1545                 return LRU_SKIP;
1546         /*
1547          * Decrement the b_lru_ref count unless the value is already
1548          * zero. If the value is already zero, we need to reclaim the
1549          * buffer, otherwise it gets another trip through the LRU.
1550          */
1551         if (!atomic_add_unless(&bp->b_lru_ref, -1, 0)) {
1552                 spin_unlock(&bp->b_lock);
1553                 return LRU_ROTATE;
1554         }
1555
1556         bp->b_state |= XFS_BSTATE_DISPOSE;
1557         list_move(item, dispose);
1558         spin_unlock(&bp->b_lock);
1559         return LRU_REMOVED;
1560 }
1561
1562 static unsigned long
1563 xfs_buftarg_shrink_scan(
1564         struct shrinker         *shrink,
1565         struct shrink_control   *sc)
1566 {
1567         struct xfs_buftarg      *btp = container_of(shrink,
1568                                         struct xfs_buftarg, bt_shrinker);
1569         LIST_HEAD(dispose);
1570         unsigned long           freed;
1571         unsigned long           nr_to_scan = sc->nr_to_scan;
1572
1573         freed = list_lru_walk_node(&btp->bt_lru, sc->nid, xfs_buftarg_isolate,
1574                                        &dispose, &nr_to_scan);
1575
1576         while (!list_empty(&dispose)) {
1577                 struct xfs_buf *bp;
1578                 bp = list_first_entry(&dispose, struct xfs_buf, b_lru);
1579                 list_del_init(&bp->b_lru);
1580                 xfs_buf_rele(bp);
1581         }
1582
1583         return freed;
1584 }
1585
1586 static unsigned long
1587 xfs_buftarg_shrink_count(
1588         struct shrinker         *shrink,
1589         struct shrink_control   *sc)
1590 {
1591         struct xfs_buftarg      *btp = container_of(shrink,
1592                                         struct xfs_buftarg, bt_shrinker);
1593         return list_lru_count_node(&btp->bt_lru, sc->nid);
1594 }
1595
1596 void
1597 xfs_free_buftarg(
1598         struct xfs_mount        *mp,
1599         struct xfs_buftarg      *btp)
1600 {
1601         unregister_shrinker(&btp->bt_shrinker);
1602         list_lru_destroy(&btp->bt_lru);
1603
1604         if (mp->m_flags & XFS_MOUNT_BARRIER)
1605                 xfs_blkdev_issue_flush(btp);
1606
1607         kmem_free(btp);
1608 }
1609
1610 int
1611 xfs_setsize_buftarg(
1612         xfs_buftarg_t           *btp,
1613         unsigned int            sectorsize)
1614 {
1615         /* Set up metadata sector size info */
1616         btp->bt_meta_sectorsize = sectorsize;
1617         btp->bt_meta_sectormask = sectorsize - 1;
1618
1619         if (set_blocksize(btp->bt_bdev, sectorsize)) {
1620                 char name[BDEVNAME_SIZE];
1621
1622                 bdevname(btp->bt_bdev, name);
1623
1624                 xfs_warn(btp->bt_mount,
1625                         "Cannot set_blocksize to %u on device %s",
1626                         sectorsize, name);
1627                 return -EINVAL;
1628         }
1629
1630         /* Set up device logical sector size mask */
1631         btp->bt_logical_sectorsize = bdev_logical_block_size(btp->bt_bdev);
1632         btp->bt_logical_sectormask = bdev_logical_block_size(btp->bt_bdev) - 1;
1633
1634         return 0;
1635 }
1636
1637 /*
1638  * When allocating the initial buffer target we have not yet
1639  * read in the superblock, so don't know what sized sectors
1640  * are being used at this early stage.  Play safe.
1641  */
1642 STATIC int
1643 xfs_setsize_buftarg_early(
1644         xfs_buftarg_t           *btp,
1645         struct block_device     *bdev)
1646 {
1647         return xfs_setsize_buftarg(btp, bdev_logical_block_size(bdev));
1648 }
1649
1650 xfs_buftarg_t *
1651 xfs_alloc_buftarg(
1652         struct xfs_mount        *mp,
1653         struct block_device     *bdev)
1654 {
1655         xfs_buftarg_t           *btp;
1656
1657         btp = kmem_zalloc(sizeof(*btp), KM_SLEEP | KM_NOFS);
1658
1659         btp->bt_mount = mp;
1660         btp->bt_dev =  bdev->bd_dev;
1661         btp->bt_bdev = bdev;
1662         btp->bt_bdi = blk_get_backing_dev_info(bdev);
1663         if (!btp->bt_bdi)
1664                 goto error;
1665
1666         if (xfs_setsize_buftarg_early(btp, bdev))
1667                 goto error;
1668
1669         if (list_lru_init(&btp->bt_lru))
1670                 goto error;
1671
1672         btp->bt_shrinker.count_objects = xfs_buftarg_shrink_count;
1673         btp->bt_shrinker.scan_objects = xfs_buftarg_shrink_scan;
1674         btp->bt_shrinker.seeks = DEFAULT_SEEKS;
1675         btp->bt_shrinker.flags = SHRINKER_NUMA_AWARE;
1676         register_shrinker(&btp->bt_shrinker);
1677         return btp;
1678
1679 error:
1680         kmem_free(btp);
1681         return NULL;
1682 }
1683
1684 /*
1685  * Add a buffer to the delayed write list.
1686  *
1687  * This queues a buffer for writeout if it hasn't already been.  Note that
1688  * neither this routine nor the buffer list submission functions perform
1689  * any internal synchronization.  It is expected that the lists are thread-local
1690  * to the callers.
1691  *
1692  * Returns true if we queued up the buffer, or false if it already had
1693  * been on the buffer list.
1694  */
1695 bool
1696 xfs_buf_delwri_queue(
1697         struct xfs_buf          *bp,
1698         struct list_head        *list)
1699 {
1700         ASSERT(xfs_buf_islocked(bp));
1701         ASSERT(!(bp->b_flags & XBF_READ));
1702
1703         /*
1704          * If the buffer is already marked delwri it already is queued up
1705          * by someone else for imediate writeout.  Just ignore it in that
1706          * case.
1707          */
1708         if (bp->b_flags & _XBF_DELWRI_Q) {
1709                 trace_xfs_buf_delwri_queued(bp, _RET_IP_);
1710                 return false;
1711         }
1712
1713         trace_xfs_buf_delwri_queue(bp, _RET_IP_);
1714
1715         /*
1716          * If a buffer gets written out synchronously or marked stale while it
1717          * is on a delwri list we lazily remove it. To do this, the other party
1718          * clears the  _XBF_DELWRI_Q flag but otherwise leaves the buffer alone.
1719          * It remains referenced and on the list.  In a rare corner case it
1720          * might get readded to a delwri list after the synchronous writeout, in
1721          * which case we need just need to re-add the flag here.
1722          */
1723         bp->b_flags |= _XBF_DELWRI_Q;
1724         if (list_empty(&bp->b_list)) {
1725                 atomic_inc(&bp->b_hold);
1726                 list_add_tail(&bp->b_list, list);
1727         }
1728
1729         return true;
1730 }
1731
1732 /*
1733  * Compare function is more complex than it needs to be because
1734  * the return value is only 32 bits and we are doing comparisons
1735  * on 64 bit values
1736  */
1737 static int
1738 xfs_buf_cmp(
1739         void            *priv,
1740         struct list_head *a,
1741         struct list_head *b)
1742 {
1743         struct xfs_buf  *ap = container_of(a, struct xfs_buf, b_list);
1744         struct xfs_buf  *bp = container_of(b, struct xfs_buf, b_list);
1745         xfs_daddr_t             diff;
1746
1747         diff = ap->b_maps[0].bm_bn - bp->b_maps[0].bm_bn;
1748         if (diff < 0)
1749                 return -1;
1750         if (diff > 0)
1751                 return 1;
1752         return 0;
1753 }
1754
1755 static int
1756 __xfs_buf_delwri_submit(
1757         struct list_head        *buffer_list,
1758         struct list_head        *io_list,
1759         bool                    wait)
1760 {
1761         struct blk_plug         plug;
1762         struct xfs_buf          *bp, *n;
1763         int                     pinned = 0;
1764
1765         list_for_each_entry_safe(bp, n, buffer_list, b_list) {
1766                 if (!wait) {
1767                         if (xfs_buf_ispinned(bp)) {
1768                                 pinned++;
1769                                 continue;
1770                         }
1771                         if (!xfs_buf_trylock(bp))
1772                                 continue;
1773                 } else {
1774                         xfs_buf_lock(bp);
1775                 }
1776
1777                 /*
1778                  * Someone else might have written the buffer synchronously or
1779                  * marked it stale in the meantime.  In that case only the
1780                  * _XBF_DELWRI_Q flag got cleared, and we have to drop the
1781                  * reference and remove it from the list here.
1782                  */
1783                 if (!(bp->b_flags & _XBF_DELWRI_Q)) {
1784                         list_del_init(&bp->b_list);
1785                         xfs_buf_relse(bp);
1786                         continue;
1787                 }
1788
1789                 list_move_tail(&bp->b_list, io_list);
1790                 trace_xfs_buf_delwri_split(bp, _RET_IP_);
1791         }
1792
1793         list_sort(NULL, io_list, xfs_buf_cmp);
1794
1795         blk_start_plug(&plug);
1796         list_for_each_entry_safe(bp, n, io_list, b_list) {
1797                 bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC | XBF_WRITE_FAIL);
1798                 bp->b_flags |= XBF_WRITE | XBF_ASYNC;
1799
1800                 /*
1801                  * we do all Io submission async. This means if we need to wait
1802                  * for IO completion we need to take an extra reference so the
1803                  * buffer is still valid on the other side.
1804                  */
1805                 if (wait)
1806                         xfs_buf_hold(bp);
1807                 else
1808                         list_del_init(&bp->b_list);
1809
1810                 xfs_buf_submit(bp);
1811         }
1812         blk_finish_plug(&plug);
1813
1814         return pinned;
1815 }
1816
1817 /*
1818  * Write out a buffer list asynchronously.
1819  *
1820  * This will take the @buffer_list, write all non-locked and non-pinned buffers
1821  * out and not wait for I/O completion on any of the buffers.  This interface
1822  * is only safely useable for callers that can track I/O completion by higher
1823  * level means, e.g. AIL pushing as the @buffer_list is consumed in this
1824  * function.
1825  */
1826 int
1827 xfs_buf_delwri_submit_nowait(
1828         struct list_head        *buffer_list)
1829 {
1830         LIST_HEAD               (io_list);
1831         return __xfs_buf_delwri_submit(buffer_list, &io_list, false);
1832 }
1833
1834 /*
1835  * Write out a buffer list synchronously.
1836  *
1837  * This will take the @buffer_list, write all buffers out and wait for I/O
1838  * completion on all of the buffers. @buffer_list is consumed by the function,
1839  * so callers must have some other way of tracking buffers if they require such
1840  * functionality.
1841  */
1842 int
1843 xfs_buf_delwri_submit(
1844         struct list_head        *buffer_list)
1845 {
1846         LIST_HEAD               (io_list);
1847         int                     error = 0, error2;
1848         struct xfs_buf          *bp;
1849
1850         __xfs_buf_delwri_submit(buffer_list, &io_list, true);
1851
1852         /* Wait for IO to complete. */
1853         while (!list_empty(&io_list)) {
1854                 bp = list_first_entry(&io_list, struct xfs_buf, b_list);
1855
1856                 list_del_init(&bp->b_list);
1857
1858                 /* locking the buffer will wait for async IO completion. */
1859                 xfs_buf_lock(bp);
1860                 error2 = bp->b_error;
1861                 xfs_buf_relse(bp);
1862                 if (!error)
1863                         error = error2;
1864         }
1865
1866         return error;
1867 }
1868
1869 int __init
1870 xfs_buf_init(void)
1871 {
1872         xfs_buf_zone = kmem_zone_init_flags(sizeof(xfs_buf_t), "xfs_buf",
1873                                                 KM_ZONE_HWALIGN, NULL);
1874         if (!xfs_buf_zone)
1875                 goto out;
1876
1877         xfslogd_workqueue = alloc_workqueue("xfslogd",
1878                                         WQ_MEM_RECLAIM | WQ_HIGHPRI, 1);
1879         if (!xfslogd_workqueue)
1880                 goto out_free_buf_zone;
1881
1882         return 0;
1883
1884  out_free_buf_zone:
1885         kmem_zone_destroy(xfs_buf_zone);
1886  out:
1887         return -ENOMEM;
1888 }
1889
1890 void
1891 xfs_buf_terminate(void)
1892 {
1893         destroy_workqueue(xfslogd_workqueue);
1894         kmem_zone_destroy(xfs_buf_zone);
1895 }