xfs: use blocks for counting length of buffers
[firefly-linux-kernel-4.4.55.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_sb.h"
38 #include "xfs_inum.h"
39 #include "xfs_log.h"
40 #include "xfs_ag.h"
41 #include "xfs_mount.h"
42 #include "xfs_trace.h"
43
44 static kmem_zone_t *xfs_buf_zone;
45
46 static struct workqueue_struct *xfslogd_workqueue;
47
48 #ifdef XFS_BUF_LOCK_TRACKING
49 # define XB_SET_OWNER(bp)       ((bp)->b_last_holder = current->pid)
50 # define XB_CLEAR_OWNER(bp)     ((bp)->b_last_holder = -1)
51 # define XB_GET_OWNER(bp)       ((bp)->b_last_holder)
52 #else
53 # define XB_SET_OWNER(bp)       do { } while (0)
54 # define XB_CLEAR_OWNER(bp)     do { } while (0)
55 # define XB_GET_OWNER(bp)       do { } while (0)
56 #endif
57
58 #define xb_to_gfp(flags) \
59         ((((flags) & XBF_READ_AHEAD) ? __GFP_NORETRY : \
60           ((flags) & XBF_DONT_BLOCK) ? GFP_NOFS : GFP_KERNEL) | __GFP_NOWARN)
61
62 #define xb_to_km(flags) \
63          (((flags) & XBF_DONT_BLOCK) ? KM_NOFS : KM_SLEEP)
64
65
66 static inline int
67 xfs_buf_is_vmapped(
68         struct xfs_buf  *bp)
69 {
70         /*
71          * Return true if the buffer is vmapped.
72          *
73          * The XBF_MAPPED flag is set if the buffer should be mapped, but the
74          * code is clever enough to know it doesn't have to map a single page,
75          * so the check has to be both for XBF_MAPPED and bp->b_page_count > 1.
76          */
77         return (bp->b_flags & XBF_MAPPED) && bp->b_page_count > 1;
78 }
79
80 static inline int
81 xfs_buf_vmap_len(
82         struct xfs_buf  *bp)
83 {
84         return (bp->b_page_count * PAGE_SIZE) - bp->b_offset;
85 }
86
87 /*
88  * xfs_buf_lru_add - add a buffer to the LRU.
89  *
90  * The LRU takes a new reference to the buffer so that it will only be freed
91  * once the shrinker takes the buffer off the LRU.
92  */
93 STATIC void
94 xfs_buf_lru_add(
95         struct xfs_buf  *bp)
96 {
97         struct xfs_buftarg *btp = bp->b_target;
98
99         spin_lock(&btp->bt_lru_lock);
100         if (list_empty(&bp->b_lru)) {
101                 atomic_inc(&bp->b_hold);
102                 list_add_tail(&bp->b_lru, &btp->bt_lru);
103                 btp->bt_lru_nr++;
104         }
105         spin_unlock(&btp->bt_lru_lock);
106 }
107
108 /*
109  * xfs_buf_lru_del - remove a buffer from the LRU
110  *
111  * The unlocked check is safe here because it only occurs when there are not
112  * b_lru_ref counts left on the inode under the pag->pag_buf_lock. it is there
113  * to optimise the shrinker removing the buffer from the LRU and calling
114  * xfs_buf_free(). i.e. it removes an unnecessary round trip on the
115  * bt_lru_lock.
116  */
117 STATIC void
118 xfs_buf_lru_del(
119         struct xfs_buf  *bp)
120 {
121         struct xfs_buftarg *btp = bp->b_target;
122
123         if (list_empty(&bp->b_lru))
124                 return;
125
126         spin_lock(&btp->bt_lru_lock);
127         if (!list_empty(&bp->b_lru)) {
128                 list_del_init(&bp->b_lru);
129                 btp->bt_lru_nr--;
130         }
131         spin_unlock(&btp->bt_lru_lock);
132 }
133
134 /*
135  * When we mark a buffer stale, we remove the buffer from the LRU and clear the
136  * b_lru_ref count so that the buffer is freed immediately when the buffer
137  * reference count falls to zero. If the buffer is already on the LRU, we need
138  * to remove the reference that LRU holds on the buffer.
139  *
140  * This prevents build-up of stale buffers on the LRU.
141  */
142 void
143 xfs_buf_stale(
144         struct xfs_buf  *bp)
145 {
146         ASSERT(xfs_buf_islocked(bp));
147
148         bp->b_flags |= XBF_STALE;
149
150         /*
151          * Clear the delwri status so that a delwri queue walker will not
152          * flush this buffer to disk now that it is stale. The delwri queue has
153          * a reference to the buffer, so this is safe to do.
154          */
155         bp->b_flags &= ~_XBF_DELWRI_Q;
156
157         atomic_set(&(bp)->b_lru_ref, 0);
158         if (!list_empty(&bp->b_lru)) {
159                 struct xfs_buftarg *btp = bp->b_target;
160
161                 spin_lock(&btp->bt_lru_lock);
162                 if (!list_empty(&bp->b_lru)) {
163                         list_del_init(&bp->b_lru);
164                         btp->bt_lru_nr--;
165                         atomic_dec(&bp->b_hold);
166                 }
167                 spin_unlock(&btp->bt_lru_lock);
168         }
169         ASSERT(atomic_read(&bp->b_hold) >= 1);
170 }
171
172 struct xfs_buf *
173 xfs_buf_alloc(
174         struct xfs_buftarg      *target,
175         xfs_daddr_t             blkno,
176         size_t                  numblks,
177         xfs_buf_flags_t         flags)
178 {
179         struct xfs_buf          *bp;
180
181         bp = kmem_zone_zalloc(xfs_buf_zone, xb_to_km(flags));
182         if (unlikely(!bp))
183                 return NULL;
184
185         /*
186          * We don't want certain flags to appear in b_flags.
187          */
188         flags &= ~(XBF_LOCK|XBF_MAPPED|XBF_DONT_BLOCK|XBF_READ_AHEAD);
189
190         atomic_set(&bp->b_hold, 1);
191         atomic_set(&bp->b_lru_ref, 1);
192         init_completion(&bp->b_iowait);
193         INIT_LIST_HEAD(&bp->b_lru);
194         INIT_LIST_HEAD(&bp->b_list);
195         RB_CLEAR_NODE(&bp->b_rbnode);
196         sema_init(&bp->b_sema, 0); /* held, no waiters */
197         XB_SET_OWNER(bp);
198         bp->b_target = target;
199
200         /*
201          * Set length and count_desired to the same value initially.
202          * I/O routines should use count_desired, which will be the same in
203          * most cases but may be reset (e.g. XFS recovery).
204          */
205         bp->b_length = numblks;
206         bp->b_count_desired = numblks << BBSHIFT;
207         bp->b_flags = flags;
208
209         /*
210          * We do not set the block number here in the buffer because we have not
211          * finished initialising the buffer. We insert the buffer into the cache
212          * in this state, so this ensures that we are unable to do IO on a
213          * buffer that hasn't been fully initialised.
214          */
215         bp->b_bn = XFS_BUF_DADDR_NULL;
216         atomic_set(&bp->b_pin_count, 0);
217         init_waitqueue_head(&bp->b_waiters);
218
219         XFS_STATS_INC(xb_create);
220         trace_xfs_buf_init(bp, _RET_IP_);
221
222         return bp;
223 }
224
225 /*
226  *      Allocate a page array capable of holding a specified number
227  *      of pages, and point the page buf at it.
228  */
229 STATIC int
230 _xfs_buf_get_pages(
231         xfs_buf_t               *bp,
232         int                     page_count,
233         xfs_buf_flags_t         flags)
234 {
235         /* Make sure that we have a page list */
236         if (bp->b_pages == NULL) {
237                 bp->b_page_count = page_count;
238                 if (page_count <= XB_PAGES) {
239                         bp->b_pages = bp->b_page_array;
240                 } else {
241                         bp->b_pages = kmem_alloc(sizeof(struct page *) *
242                                         page_count, xb_to_km(flags));
243                         if (bp->b_pages == NULL)
244                                 return -ENOMEM;
245                 }
246                 memset(bp->b_pages, 0, sizeof(struct page *) * page_count);
247         }
248         return 0;
249 }
250
251 /*
252  *      Frees b_pages if it was allocated.
253  */
254 STATIC void
255 _xfs_buf_free_pages(
256         xfs_buf_t       *bp)
257 {
258         if (bp->b_pages != bp->b_page_array) {
259                 kmem_free(bp->b_pages);
260                 bp->b_pages = NULL;
261         }
262 }
263
264 /*
265  *      Releases the specified buffer.
266  *
267  *      The modification state of any associated pages is left unchanged.
268  *      The buffer most not be on any hash - use xfs_buf_rele instead for
269  *      hashed and refcounted buffers
270  */
271 void
272 xfs_buf_free(
273         xfs_buf_t               *bp)
274 {
275         trace_xfs_buf_free(bp, _RET_IP_);
276
277         ASSERT(list_empty(&bp->b_lru));
278
279         if (bp->b_flags & _XBF_PAGES) {
280                 uint            i;
281
282                 if (xfs_buf_is_vmapped(bp))
283                         vm_unmap_ram(bp->b_addr - bp->b_offset,
284                                         bp->b_page_count);
285
286                 for (i = 0; i < bp->b_page_count; i++) {
287                         struct page     *page = bp->b_pages[i];
288
289                         __free_page(page);
290                 }
291         } else if (bp->b_flags & _XBF_KMEM)
292                 kmem_free(bp->b_addr);
293         _xfs_buf_free_pages(bp);
294         kmem_zone_free(xfs_buf_zone, bp);
295 }
296
297 /*
298  * Allocates all the pages for buffer in question and builds it's page list.
299  */
300 STATIC int
301 xfs_buf_allocate_memory(
302         xfs_buf_t               *bp,
303         uint                    flags)
304 {
305         size_t                  size = bp->b_count_desired;
306         size_t                  nbytes, offset;
307         gfp_t                   gfp_mask = xb_to_gfp(flags);
308         unsigned short          page_count, i;
309         xfs_off_t               end;
310         int                     error;
311
312         /*
313          * for buffers that are contained within a single page, just allocate
314          * the memory from the heap - there's no need for the complexity of
315          * page arrays to keep allocation down to order 0.
316          */
317         if (bp->b_length < BTOBB(PAGE_SIZE)) {
318                 bp->b_addr = kmem_alloc(BBTOB(bp->b_length), xb_to_km(flags));
319                 if (!bp->b_addr) {
320                         /* low memory - use alloc_page loop instead */
321                         goto use_alloc_page;
322                 }
323
324                 if (((unsigned long)(bp->b_addr + BBTOB(bp->b_length) - 1) &
325                                                                 PAGE_MASK) !=
326                     ((unsigned long)bp->b_addr & PAGE_MASK)) {
327                         /* b_addr spans two pages - use alloc_page instead */
328                         kmem_free(bp->b_addr);
329                         bp->b_addr = NULL;
330                         goto use_alloc_page;
331                 }
332                 bp->b_offset = offset_in_page(bp->b_addr);
333                 bp->b_pages = bp->b_page_array;
334                 bp->b_pages[0] = virt_to_page(bp->b_addr);
335                 bp->b_page_count = 1;
336                 bp->b_flags |= XBF_MAPPED | _XBF_KMEM;
337                 return 0;
338         }
339
340 use_alloc_page:
341         end = BBTOB(bp->b_bn + bp->b_length);
342         page_count = xfs_buf_btoc(end) - xfs_buf_btoct(BBTOB(bp->b_bn));
343         error = _xfs_buf_get_pages(bp, page_count, flags);
344         if (unlikely(error))
345                 return error;
346
347         offset = bp->b_offset;
348         bp->b_flags |= _XBF_PAGES;
349
350         for (i = 0; i < bp->b_page_count; i++) {
351                 struct page     *page;
352                 uint            retries = 0;
353 retry:
354                 page = alloc_page(gfp_mask);
355                 if (unlikely(page == NULL)) {
356                         if (flags & XBF_READ_AHEAD) {
357                                 bp->b_page_count = i;
358                                 error = ENOMEM;
359                                 goto out_free_pages;
360                         }
361
362                         /*
363                          * This could deadlock.
364                          *
365                          * But until all the XFS lowlevel code is revamped to
366                          * handle buffer allocation failures we can't do much.
367                          */
368                         if (!(++retries % 100))
369                                 xfs_err(NULL,
370                 "possible memory allocation deadlock in %s (mode:0x%x)",
371                                         __func__, gfp_mask);
372
373                         XFS_STATS_INC(xb_page_retries);
374                         congestion_wait(BLK_RW_ASYNC, HZ/50);
375                         goto retry;
376                 }
377
378                 XFS_STATS_INC(xb_page_found);
379
380                 nbytes = min_t(size_t, size, PAGE_SIZE - offset);
381                 size -= nbytes;
382                 bp->b_pages[i] = page;
383                 offset = 0;
384         }
385         return 0;
386
387 out_free_pages:
388         for (i = 0; i < bp->b_page_count; i++)
389                 __free_page(bp->b_pages[i]);
390         return error;
391 }
392
393 /*
394  *      Map buffer into kernel address-space if necessary.
395  */
396 STATIC int
397 _xfs_buf_map_pages(
398         xfs_buf_t               *bp,
399         uint                    flags)
400 {
401         ASSERT(bp->b_flags & _XBF_PAGES);
402         if (bp->b_page_count == 1) {
403                 /* A single page buffer is always mappable */
404                 bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
405                 bp->b_flags |= XBF_MAPPED;
406         } else if (flags & XBF_MAPPED) {
407                 int retried = 0;
408
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
417                 if (!bp->b_addr)
418                         return -ENOMEM;
419                 bp->b_addr += bp->b_offset;
420                 bp->b_flags |= XBF_MAPPED;
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         xfs_daddr_t             blkno,
439         size_t                  numblks,
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
449         numbytes = BBTOB(numblks);
450
451         /* Check for IOs smaller than the sector size / not sector aligned */
452         ASSERT(!(numbytes < (1 << btp->bt_sshift)));
453         ASSERT(!(BBTOB(blkno) & (xfs_off_t)btp->bt_smask));
454
455         /* get tree root */
456         pag = xfs_perag_get(btp->bt_mount,
457                                 xfs_daddr_to_agno(btp->bt_mount, blkno));
458
459         /* walk tree */
460         spin_lock(&pag->pag_buf_lock);
461         rbp = &pag->pag_buf_tree.rb_node;
462         parent = NULL;
463         bp = NULL;
464         while (*rbp) {
465                 parent = *rbp;
466                 bp = rb_entry(parent, struct xfs_buf, b_rbnode);
467
468                 if (blkno < bp->b_bn)
469                         rbp = &(*rbp)->rb_left;
470                 else if (blkno > bp->b_bn)
471                         rbp = &(*rbp)->rb_right;
472                 else {
473                         /*
474                          * found a block number match. If the range doesn't
475                          * match, the only way this is allowed is if the buffer
476                          * in the cache is stale and the transaction that made
477                          * it stale has not yet committed. i.e. we are
478                          * reallocating a busy extent. Skip this buffer and
479                          * continue searching to the right for an exact match.
480                          */
481                         if (bp->b_length != numblks) {
482                                 ASSERT(bp->b_flags & XBF_STALE);
483                                 rbp = &(*rbp)->rb_right;
484                                 continue;
485                         }
486                         atomic_inc(&bp->b_hold);
487                         goto found;
488                 }
489         }
490
491         /* No match found */
492         if (new_bp) {
493                 rb_link_node(&new_bp->b_rbnode, parent, rbp);
494                 rb_insert_color(&new_bp->b_rbnode, &pag->pag_buf_tree);
495                 /* the buffer keeps the perag reference until it is freed */
496                 new_bp->b_pag = pag;
497                 spin_unlock(&pag->pag_buf_lock);
498         } else {
499                 XFS_STATS_INC(xb_miss_locked);
500                 spin_unlock(&pag->pag_buf_lock);
501                 xfs_perag_put(pag);
502         }
503         return new_bp;
504
505 found:
506         spin_unlock(&pag->pag_buf_lock);
507         xfs_perag_put(pag);
508
509         if (!xfs_buf_trylock(bp)) {
510                 if (flags & XBF_TRYLOCK) {
511                         xfs_buf_rele(bp);
512                         XFS_STATS_INC(xb_busy_locked);
513                         return NULL;
514                 }
515                 xfs_buf_lock(bp);
516                 XFS_STATS_INC(xb_get_locked_waited);
517         }
518
519         /*
520          * if the buffer is stale, clear all the external state associated with
521          * it. We need to keep flags such as how we allocated the buffer memory
522          * intact here.
523          */
524         if (bp->b_flags & XBF_STALE) {
525                 ASSERT((bp->b_flags & _XBF_DELWRI_Q) == 0);
526                 bp->b_flags &= XBF_MAPPED | _XBF_KMEM | _XBF_PAGES;
527         }
528
529         trace_xfs_buf_find(bp, flags, _RET_IP_);
530         XFS_STATS_INC(xb_get_locked);
531         return bp;
532 }
533
534 /*
535  * Assembles a buffer covering the specified range. The code is optimised for
536  * cache hits, as metadata intensive workloads will see 3 orders of magnitude
537  * more hits than misses.
538  */
539 struct xfs_buf *
540 xfs_buf_get(
541         xfs_buftarg_t           *target,
542         xfs_daddr_t             blkno,
543         size_t                  numblks,
544         xfs_buf_flags_t         flags)
545 {
546         struct xfs_buf          *bp;
547         struct xfs_buf          *new_bp;
548         int                     error = 0;
549
550         bp = _xfs_buf_find(target, blkno, numblks, flags, NULL);
551         if (likely(bp))
552                 goto found;
553
554         new_bp = xfs_buf_alloc(target, blkno, numblks, flags);
555         if (unlikely(!new_bp))
556                 return NULL;
557
558         error = xfs_buf_allocate_memory(new_bp, flags);
559         if (error) {
560                 kmem_zone_free(xfs_buf_zone, new_bp);
561                 return NULL;
562         }
563
564         bp = _xfs_buf_find(target, blkno, numblks, flags, new_bp);
565         if (!bp) {
566                 xfs_buf_free(new_bp);
567                 return NULL;
568         }
569
570         if (bp != new_bp)
571                 xfs_buf_free(new_bp);
572
573         /*
574          * Now we have a workable buffer, fill in the block number so
575          * that we can do IO on it.
576          */
577         bp->b_bn = blkno;
578         bp->b_count_desired = BBTOB(bp->b_length);
579
580 found:
581         if (!(bp->b_flags & XBF_MAPPED)) {
582                 error = _xfs_buf_map_pages(bp, flags);
583                 if (unlikely(error)) {
584                         xfs_warn(target->bt_mount,
585                                 "%s: failed to map pages\n", __func__);
586                         goto no_buffer;
587                 }
588         }
589
590         XFS_STATS_INC(xb_get);
591         trace_xfs_buf_get(bp, flags, _RET_IP_);
592         return bp;
593
594 no_buffer:
595         if (flags & (XBF_LOCK | XBF_TRYLOCK))
596                 xfs_buf_unlock(bp);
597         xfs_buf_rele(bp);
598         return NULL;
599 }
600
601 STATIC int
602 _xfs_buf_read(
603         xfs_buf_t               *bp,
604         xfs_buf_flags_t         flags)
605 {
606         ASSERT(!(flags & XBF_WRITE));
607         ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL);
608
609         bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_READ_AHEAD);
610         bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | XBF_READ_AHEAD);
611
612         xfs_buf_iorequest(bp);
613         if (flags & XBF_ASYNC)
614                 return 0;
615         return xfs_buf_iowait(bp);
616 }
617
618 xfs_buf_t *
619 xfs_buf_read(
620         xfs_buftarg_t           *target,
621         xfs_daddr_t             blkno,
622         size_t                  numblks,
623         xfs_buf_flags_t         flags)
624 {
625         xfs_buf_t               *bp;
626
627         flags |= XBF_READ;
628
629         bp = xfs_buf_get(target, blkno, numblks, flags);
630         if (bp) {
631                 trace_xfs_buf_read(bp, flags, _RET_IP_);
632
633                 if (!XFS_BUF_ISDONE(bp)) {
634                         XFS_STATS_INC(xb_get_read);
635                         _xfs_buf_read(bp, flags);
636                 } else if (flags & XBF_ASYNC) {
637                         /*
638                          * Read ahead call which is already satisfied,
639                          * drop the buffer
640                          */
641                         goto no_buffer;
642                 } else {
643                         /* We do not want read in the flags */
644                         bp->b_flags &= ~XBF_READ;
645                 }
646         }
647
648         return bp;
649
650  no_buffer:
651         if (flags & (XBF_LOCK | XBF_TRYLOCK))
652                 xfs_buf_unlock(bp);
653         xfs_buf_rele(bp);
654         return NULL;
655 }
656
657 /*
658  *      If we are not low on memory then do the readahead in a deadlock
659  *      safe manner.
660  */
661 void
662 xfs_buf_readahead(
663         xfs_buftarg_t           *target,
664         xfs_daddr_t             blkno,
665         size_t                  numblks)
666 {
667         if (bdi_read_congested(target->bt_bdi))
668                 return;
669
670         xfs_buf_read(target, blkno, numblks,
671                      XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD|XBF_DONT_BLOCK);
672 }
673
674 /*
675  * Read an uncached buffer from disk. Allocates and returns a locked
676  * buffer containing the disk contents or nothing.
677  */
678 struct xfs_buf *
679 xfs_buf_read_uncached(
680         struct xfs_buftarg      *target,
681         xfs_daddr_t             daddr,
682         size_t                  numblks,
683         int                     flags)
684 {
685         xfs_buf_t               *bp;
686         int                     error;
687
688         bp = xfs_buf_get_uncached(target, numblks, flags);
689         if (!bp)
690                 return NULL;
691
692         /* set up the buffer for a read IO */
693         XFS_BUF_SET_ADDR(bp, daddr);
694         XFS_BUF_READ(bp);
695
696         xfsbdstrat(target->bt_mount, bp);
697         error = xfs_buf_iowait(bp);
698         if (error) {
699                 xfs_buf_relse(bp);
700                 return NULL;
701         }
702         return bp;
703 }
704
705 /*
706  * Return a buffer allocated as an empty buffer and associated to external
707  * memory via xfs_buf_associate_memory() back to it's empty state.
708  */
709 void
710 xfs_buf_set_empty(
711         struct xfs_buf          *bp,
712         size_t                  numblks)
713 {
714         if (bp->b_pages)
715                 _xfs_buf_free_pages(bp);
716
717         bp->b_pages = NULL;
718         bp->b_page_count = 0;
719         bp->b_addr = NULL;
720         bp->b_length = numblks;
721         bp->b_count_desired = numblks << BBSHIFT;
722         bp->b_bn = XFS_BUF_DADDR_NULL;
723         bp->b_flags &= ~XBF_MAPPED;
724 }
725
726 static inline struct page *
727 mem_to_page(
728         void                    *addr)
729 {
730         if ((!is_vmalloc_addr(addr))) {
731                 return virt_to_page(addr);
732         } else {
733                 return vmalloc_to_page(addr);
734         }
735 }
736
737 int
738 xfs_buf_associate_memory(
739         xfs_buf_t               *bp,
740         void                    *mem,
741         size_t                  len)
742 {
743         int                     rval;
744         int                     i = 0;
745         unsigned long           pageaddr;
746         unsigned long           offset;
747         size_t                  buflen;
748         int                     page_count;
749
750         pageaddr = (unsigned long)mem & PAGE_MASK;
751         offset = (unsigned long)mem - pageaddr;
752         buflen = PAGE_ALIGN(len + offset);
753         page_count = buflen >> PAGE_SHIFT;
754
755         /* Free any previous set of page pointers */
756         if (bp->b_pages)
757                 _xfs_buf_free_pages(bp);
758
759         bp->b_pages = NULL;
760         bp->b_addr = mem;
761
762         rval = _xfs_buf_get_pages(bp, page_count, XBF_DONT_BLOCK);
763         if (rval)
764                 return rval;
765
766         bp->b_offset = offset;
767
768         for (i = 0; i < bp->b_page_count; i++) {
769                 bp->b_pages[i] = mem_to_page((void *)pageaddr);
770                 pageaddr += PAGE_SIZE;
771         }
772
773         bp->b_count_desired = len;
774         bp->b_length = BTOBB(buflen);
775         bp->b_flags |= XBF_MAPPED;
776
777         return 0;
778 }
779
780 xfs_buf_t *
781 xfs_buf_get_uncached(
782         struct xfs_buftarg      *target,
783         size_t                  numblks,
784         int                     flags)
785 {
786         unsigned long           page_count;
787         int                     error, i;
788         xfs_buf_t               *bp;
789
790         bp = xfs_buf_alloc(target, 0, numblks, 0);
791         if (unlikely(bp == NULL))
792                 goto fail;
793
794         page_count = PAGE_ALIGN(numblks << BBSHIFT) >> PAGE_SHIFT;
795         error = _xfs_buf_get_pages(bp, page_count, 0);
796         if (error)
797                 goto fail_free_buf;
798
799         for (i = 0; i < page_count; i++) {
800                 bp->b_pages[i] = alloc_page(xb_to_gfp(flags));
801                 if (!bp->b_pages[i])
802                         goto fail_free_mem;
803         }
804         bp->b_flags |= _XBF_PAGES;
805
806         error = _xfs_buf_map_pages(bp, XBF_MAPPED);
807         if (unlikely(error)) {
808                 xfs_warn(target->bt_mount,
809                         "%s: failed to map pages\n", __func__);
810                 goto fail_free_mem;
811         }
812
813         trace_xfs_buf_get_uncached(bp, _RET_IP_);
814         return bp;
815
816  fail_free_mem:
817         while (--i >= 0)
818                 __free_page(bp->b_pages[i]);
819         _xfs_buf_free_pages(bp);
820  fail_free_buf:
821         kmem_zone_free(xfs_buf_zone, bp);
822  fail:
823         return NULL;
824 }
825
826 /*
827  *      Increment reference count on buffer, to hold the buffer concurrently
828  *      with another thread which may release (free) the buffer asynchronously.
829  *      Must hold the buffer already to call this function.
830  */
831 void
832 xfs_buf_hold(
833         xfs_buf_t               *bp)
834 {
835         trace_xfs_buf_hold(bp, _RET_IP_);
836         atomic_inc(&bp->b_hold);
837 }
838
839 /*
840  *      Releases a hold on the specified buffer.  If the
841  *      the hold count is 1, calls xfs_buf_free.
842  */
843 void
844 xfs_buf_rele(
845         xfs_buf_t               *bp)
846 {
847         struct xfs_perag        *pag = bp->b_pag;
848
849         trace_xfs_buf_rele(bp, _RET_IP_);
850
851         if (!pag) {
852                 ASSERT(list_empty(&bp->b_lru));
853                 ASSERT(RB_EMPTY_NODE(&bp->b_rbnode));
854                 if (atomic_dec_and_test(&bp->b_hold))
855                         xfs_buf_free(bp);
856                 return;
857         }
858
859         ASSERT(!RB_EMPTY_NODE(&bp->b_rbnode));
860
861         ASSERT(atomic_read(&bp->b_hold) > 0);
862         if (atomic_dec_and_lock(&bp->b_hold, &pag->pag_buf_lock)) {
863                 if (!(bp->b_flags & XBF_STALE) &&
864                            atomic_read(&bp->b_lru_ref)) {
865                         xfs_buf_lru_add(bp);
866                         spin_unlock(&pag->pag_buf_lock);
867                 } else {
868                         xfs_buf_lru_del(bp);
869                         ASSERT(!(bp->b_flags & _XBF_DELWRI_Q));
870                         rb_erase(&bp->b_rbnode, &pag->pag_buf_tree);
871                         spin_unlock(&pag->pag_buf_lock);
872                         xfs_perag_put(pag);
873                         xfs_buf_free(bp);
874                 }
875         }
876 }
877
878
879 /*
880  *      Lock a buffer object, if it is not already locked.
881  *
882  *      If we come across a stale, pinned, locked buffer, we know that we are
883  *      being asked to lock a buffer that has been reallocated. Because it is
884  *      pinned, we know that the log has not been pushed to disk and hence it
885  *      will still be locked.  Rather than continuing to have trylock attempts
886  *      fail until someone else pushes the log, push it ourselves before
887  *      returning.  This means that the xfsaild will not get stuck trying
888  *      to push on stale inode buffers.
889  */
890 int
891 xfs_buf_trylock(
892         struct xfs_buf          *bp)
893 {
894         int                     locked;
895
896         locked = down_trylock(&bp->b_sema) == 0;
897         if (locked)
898                 XB_SET_OWNER(bp);
899         else if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE))
900                 xfs_log_force(bp->b_target->bt_mount, 0);
901
902         trace_xfs_buf_trylock(bp, _RET_IP_);
903         return locked;
904 }
905
906 /*
907  *      Lock a buffer object.
908  *
909  *      If we come across a stale, pinned, locked buffer, we know that we
910  *      are being asked to lock a buffer that has been reallocated. Because
911  *      it is pinned, we know that the log has not been pushed to disk and
912  *      hence it will still be locked. Rather than sleeping until someone
913  *      else pushes the log, push it ourselves before trying to get the lock.
914  */
915 void
916 xfs_buf_lock(
917         struct xfs_buf          *bp)
918 {
919         trace_xfs_buf_lock(bp, _RET_IP_);
920
921         if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE))
922                 xfs_log_force(bp->b_target->bt_mount, 0);
923         down(&bp->b_sema);
924         XB_SET_OWNER(bp);
925
926         trace_xfs_buf_lock_done(bp, _RET_IP_);
927 }
928
929 void
930 xfs_buf_unlock(
931         struct xfs_buf          *bp)
932 {
933         XB_CLEAR_OWNER(bp);
934         up(&bp->b_sema);
935
936         trace_xfs_buf_unlock(bp, _RET_IP_);
937 }
938
939 STATIC void
940 xfs_buf_wait_unpin(
941         xfs_buf_t               *bp)
942 {
943         DECLARE_WAITQUEUE       (wait, current);
944
945         if (atomic_read(&bp->b_pin_count) == 0)
946                 return;
947
948         add_wait_queue(&bp->b_waiters, &wait);
949         for (;;) {
950                 set_current_state(TASK_UNINTERRUPTIBLE);
951                 if (atomic_read(&bp->b_pin_count) == 0)
952                         break;
953                 io_schedule();
954         }
955         remove_wait_queue(&bp->b_waiters, &wait);
956         set_current_state(TASK_RUNNING);
957 }
958
959 /*
960  *      Buffer Utility Routines
961  */
962
963 STATIC void
964 xfs_buf_iodone_work(
965         struct work_struct      *work)
966 {
967         xfs_buf_t               *bp =
968                 container_of(work, xfs_buf_t, b_iodone_work);
969
970         if (bp->b_iodone)
971                 (*(bp->b_iodone))(bp);
972         else if (bp->b_flags & XBF_ASYNC)
973                 xfs_buf_relse(bp);
974 }
975
976 void
977 xfs_buf_ioend(
978         xfs_buf_t               *bp,
979         int                     schedule)
980 {
981         trace_xfs_buf_iodone(bp, _RET_IP_);
982
983         bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD);
984         if (bp->b_error == 0)
985                 bp->b_flags |= XBF_DONE;
986
987         if ((bp->b_iodone) || (bp->b_flags & XBF_ASYNC)) {
988                 if (schedule) {
989                         INIT_WORK(&bp->b_iodone_work, xfs_buf_iodone_work);
990                         queue_work(xfslogd_workqueue, &bp->b_iodone_work);
991                 } else {
992                         xfs_buf_iodone_work(&bp->b_iodone_work);
993                 }
994         } else {
995                 complete(&bp->b_iowait);
996         }
997 }
998
999 void
1000 xfs_buf_ioerror(
1001         xfs_buf_t               *bp,
1002         int                     error)
1003 {
1004         ASSERT(error >= 0 && error <= 0xffff);
1005         bp->b_error = (unsigned short)error;
1006         trace_xfs_buf_ioerror(bp, error, _RET_IP_);
1007 }
1008
1009 void
1010 xfs_buf_ioerror_alert(
1011         struct xfs_buf          *bp,
1012         const char              *func)
1013 {
1014         xfs_alert(bp->b_target->bt_mount,
1015 "metadata I/O error: block 0x%llx (\"%s\") error %d buf count %zd",
1016                 (__uint64_t)XFS_BUF_ADDR(bp), func,
1017                 bp->b_error, XFS_BUF_COUNT(bp));
1018 }
1019
1020 int
1021 xfs_bwrite(
1022         struct xfs_buf          *bp)
1023 {
1024         int                     error;
1025
1026         ASSERT(xfs_buf_islocked(bp));
1027
1028         bp->b_flags |= XBF_WRITE;
1029         bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q);
1030
1031         xfs_bdstrat_cb(bp);
1032
1033         error = xfs_buf_iowait(bp);
1034         if (error) {
1035                 xfs_force_shutdown(bp->b_target->bt_mount,
1036                                    SHUTDOWN_META_IO_ERROR);
1037         }
1038         return error;
1039 }
1040
1041 /*
1042  * Called when we want to stop a buffer from getting written or read.
1043  * We attach the EIO error, muck with its flags, and call xfs_buf_ioend
1044  * so that the proper iodone callbacks get called.
1045  */
1046 STATIC int
1047 xfs_bioerror(
1048         xfs_buf_t *bp)
1049 {
1050 #ifdef XFSERRORDEBUG
1051         ASSERT(XFS_BUF_ISREAD(bp) || bp->b_iodone);
1052 #endif
1053
1054         /*
1055          * No need to wait until the buffer is unpinned, we aren't flushing it.
1056          */
1057         xfs_buf_ioerror(bp, EIO);
1058
1059         /*
1060          * We're calling xfs_buf_ioend, so delete XBF_DONE flag.
1061          */
1062         XFS_BUF_UNREAD(bp);
1063         XFS_BUF_UNDONE(bp);
1064         xfs_buf_stale(bp);
1065
1066         xfs_buf_ioend(bp, 0);
1067
1068         return EIO;
1069 }
1070
1071 /*
1072  * Same as xfs_bioerror, except that we are releasing the buffer
1073  * here ourselves, and avoiding the xfs_buf_ioend call.
1074  * This is meant for userdata errors; metadata bufs come with
1075  * iodone functions attached, so that we can track down errors.
1076  */
1077 STATIC int
1078 xfs_bioerror_relse(
1079         struct xfs_buf  *bp)
1080 {
1081         int64_t         fl = bp->b_flags;
1082         /*
1083          * No need to wait until the buffer is unpinned.
1084          * We aren't flushing it.
1085          *
1086          * chunkhold expects B_DONE to be set, whether
1087          * we actually finish the I/O or not. We don't want to
1088          * change that interface.
1089          */
1090         XFS_BUF_UNREAD(bp);
1091         XFS_BUF_DONE(bp);
1092         xfs_buf_stale(bp);
1093         bp->b_iodone = NULL;
1094         if (!(fl & XBF_ASYNC)) {
1095                 /*
1096                  * Mark b_error and B_ERROR _both_.
1097                  * Lot's of chunkcache code assumes that.
1098                  * There's no reason to mark error for
1099                  * ASYNC buffers.
1100                  */
1101                 xfs_buf_ioerror(bp, EIO);
1102                 complete(&bp->b_iowait);
1103         } else {
1104                 xfs_buf_relse(bp);
1105         }
1106
1107         return EIO;
1108 }
1109
1110
1111 /*
1112  * All xfs metadata buffers except log state machine buffers
1113  * get this attached as their b_bdstrat callback function.
1114  * This is so that we can catch a buffer
1115  * after prematurely unpinning it to forcibly shutdown the filesystem.
1116  */
1117 int
1118 xfs_bdstrat_cb(
1119         struct xfs_buf  *bp)
1120 {
1121         if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
1122                 trace_xfs_bdstrat_shut(bp, _RET_IP_);
1123                 /*
1124                  * Metadata write that didn't get logged but
1125                  * written delayed anyway. These aren't associated
1126                  * with a transaction, and can be ignored.
1127                  */
1128                 if (!bp->b_iodone && !XFS_BUF_ISREAD(bp))
1129                         return xfs_bioerror_relse(bp);
1130                 else
1131                         return xfs_bioerror(bp);
1132         }
1133
1134         xfs_buf_iorequest(bp);
1135         return 0;
1136 }
1137
1138 /*
1139  * Wrapper around bdstrat so that we can stop data from going to disk in case
1140  * we are shutting down the filesystem.  Typically user data goes thru this
1141  * path; one of the exceptions is the superblock.
1142  */
1143 void
1144 xfsbdstrat(
1145         struct xfs_mount        *mp,
1146         struct xfs_buf          *bp)
1147 {
1148         if (XFS_FORCED_SHUTDOWN(mp)) {
1149                 trace_xfs_bdstrat_shut(bp, _RET_IP_);
1150                 xfs_bioerror_relse(bp);
1151                 return;
1152         }
1153
1154         xfs_buf_iorequest(bp);
1155 }
1156
1157 STATIC void
1158 _xfs_buf_ioend(
1159         xfs_buf_t               *bp,
1160         int                     schedule)
1161 {
1162         if (atomic_dec_and_test(&bp->b_io_remaining) == 1)
1163                 xfs_buf_ioend(bp, schedule);
1164 }
1165
1166 STATIC void
1167 xfs_buf_bio_end_io(
1168         struct bio              *bio,
1169         int                     error)
1170 {
1171         xfs_buf_t               *bp = (xfs_buf_t *)bio->bi_private;
1172
1173         xfs_buf_ioerror(bp, -error);
1174
1175         if (!error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ))
1176                 invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp));
1177
1178         _xfs_buf_ioend(bp, 1);
1179         bio_put(bio);
1180 }
1181
1182 STATIC void
1183 _xfs_buf_ioapply(
1184         xfs_buf_t               *bp)
1185 {
1186         int                     rw, map_i, total_nr_pages, nr_pages;
1187         struct bio              *bio;
1188         int                     offset = bp->b_offset;
1189         int                     size = bp->b_count_desired;
1190         sector_t                sector = bp->b_bn;
1191
1192         total_nr_pages = bp->b_page_count;
1193         map_i = 0;
1194
1195         if (bp->b_flags & XBF_WRITE) {
1196                 if (bp->b_flags & XBF_SYNCIO)
1197                         rw = WRITE_SYNC;
1198                 else
1199                         rw = WRITE;
1200                 if (bp->b_flags & XBF_FUA)
1201                         rw |= REQ_FUA;
1202                 if (bp->b_flags & XBF_FLUSH)
1203                         rw |= REQ_FLUSH;
1204         } else if (bp->b_flags & XBF_READ_AHEAD) {
1205                 rw = READA;
1206         } else {
1207                 rw = READ;
1208         }
1209
1210         /* we only use the buffer cache for meta-data */
1211         rw |= REQ_META;
1212
1213 next_chunk:
1214         atomic_inc(&bp->b_io_remaining);
1215         nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT);
1216         if (nr_pages > total_nr_pages)
1217                 nr_pages = total_nr_pages;
1218
1219         bio = bio_alloc(GFP_NOIO, nr_pages);
1220         bio->bi_bdev = bp->b_target->bt_bdev;
1221         bio->bi_sector = sector;
1222         bio->bi_end_io = xfs_buf_bio_end_io;
1223         bio->bi_private = bp;
1224
1225
1226         for (; size && nr_pages; nr_pages--, map_i++) {
1227                 int     rbytes, nbytes = PAGE_SIZE - offset;
1228
1229                 if (nbytes > size)
1230                         nbytes = size;
1231
1232                 rbytes = bio_add_page(bio, bp->b_pages[map_i], nbytes, offset);
1233                 if (rbytes < nbytes)
1234                         break;
1235
1236                 offset = 0;
1237                 sector += nbytes >> BBSHIFT;
1238                 size -= nbytes;
1239                 total_nr_pages--;
1240         }
1241
1242         if (likely(bio->bi_size)) {
1243                 if (xfs_buf_is_vmapped(bp)) {
1244                         flush_kernel_vmap_range(bp->b_addr,
1245                                                 xfs_buf_vmap_len(bp));
1246                 }
1247                 submit_bio(rw, bio);
1248                 if (size)
1249                         goto next_chunk;
1250         } else {
1251                 xfs_buf_ioerror(bp, EIO);
1252                 bio_put(bio);
1253         }
1254 }
1255
1256 void
1257 xfs_buf_iorequest(
1258         xfs_buf_t               *bp)
1259 {
1260         trace_xfs_buf_iorequest(bp, _RET_IP_);
1261
1262         ASSERT(!(bp->b_flags & _XBF_DELWRI_Q));
1263
1264         if (bp->b_flags & XBF_WRITE)
1265                 xfs_buf_wait_unpin(bp);
1266         xfs_buf_hold(bp);
1267
1268         /* Set the count to 1 initially, this will stop an I/O
1269          * completion callout which happens before we have started
1270          * all the I/O from calling xfs_buf_ioend too early.
1271          */
1272         atomic_set(&bp->b_io_remaining, 1);
1273         _xfs_buf_ioapply(bp);
1274         _xfs_buf_ioend(bp, 0);
1275
1276         xfs_buf_rele(bp);
1277 }
1278
1279 /*
1280  * Waits for I/O to complete on the buffer supplied.  It returns immediately if
1281  * no I/O is pending or there is already a pending error on the buffer.  It
1282  * returns the I/O error code, if any, or 0 if there was no error.
1283  */
1284 int
1285 xfs_buf_iowait(
1286         xfs_buf_t               *bp)
1287 {
1288         trace_xfs_buf_iowait(bp, _RET_IP_);
1289
1290         if (!bp->b_error)
1291                 wait_for_completion(&bp->b_iowait);
1292
1293         trace_xfs_buf_iowait_done(bp, _RET_IP_);
1294         return bp->b_error;
1295 }
1296
1297 xfs_caddr_t
1298 xfs_buf_offset(
1299         xfs_buf_t               *bp,
1300         size_t                  offset)
1301 {
1302         struct page             *page;
1303
1304         if (bp->b_flags & XBF_MAPPED)
1305                 return bp->b_addr + offset;
1306
1307         offset += bp->b_offset;
1308         page = bp->b_pages[offset >> PAGE_SHIFT];
1309         return (xfs_caddr_t)page_address(page) + (offset & (PAGE_SIZE-1));
1310 }
1311
1312 /*
1313  *      Move data into or out of a buffer.
1314  */
1315 void
1316 xfs_buf_iomove(
1317         xfs_buf_t               *bp,    /* buffer to process            */
1318         size_t                  boff,   /* starting buffer offset       */
1319         size_t                  bsize,  /* length to copy               */
1320         void                    *data,  /* data address                 */
1321         xfs_buf_rw_t            mode)   /* read/write/zero flag         */
1322 {
1323         size_t                  bend, cpoff, csize;
1324         struct page             *page;
1325
1326         bend = boff + bsize;
1327         while (boff < bend) {
1328                 page = bp->b_pages[xfs_buf_btoct(boff + bp->b_offset)];
1329                 cpoff = xfs_buf_poff(boff + bp->b_offset);
1330                 csize = min_t(size_t,
1331                               PAGE_SIZE-cpoff, bp->b_count_desired-boff);
1332
1333                 ASSERT(((csize + cpoff) <= PAGE_SIZE));
1334
1335                 switch (mode) {
1336                 case XBRW_ZERO:
1337                         memset(page_address(page) + cpoff, 0, csize);
1338                         break;
1339                 case XBRW_READ:
1340                         memcpy(data, page_address(page) + cpoff, csize);
1341                         break;
1342                 case XBRW_WRITE:
1343                         memcpy(page_address(page) + cpoff, data, csize);
1344                 }
1345
1346                 boff += csize;
1347                 data += csize;
1348         }
1349 }
1350
1351 /*
1352  *      Handling of buffer targets (buftargs).
1353  */
1354
1355 /*
1356  * Wait for any bufs with callbacks that have been submitted but have not yet
1357  * returned. These buffers will have an elevated hold count, so wait on those
1358  * while freeing all the buffers only held by the LRU.
1359  */
1360 void
1361 xfs_wait_buftarg(
1362         struct xfs_buftarg      *btp)
1363 {
1364         struct xfs_buf          *bp;
1365
1366 restart:
1367         spin_lock(&btp->bt_lru_lock);
1368         while (!list_empty(&btp->bt_lru)) {
1369                 bp = list_first_entry(&btp->bt_lru, struct xfs_buf, b_lru);
1370                 if (atomic_read(&bp->b_hold) > 1) {
1371                         spin_unlock(&btp->bt_lru_lock);
1372                         delay(100);
1373                         goto restart;
1374                 }
1375                 /*
1376                  * clear the LRU reference count so the buffer doesn't get
1377                  * ignored in xfs_buf_rele().
1378                  */
1379                 atomic_set(&bp->b_lru_ref, 0);
1380                 spin_unlock(&btp->bt_lru_lock);
1381                 xfs_buf_rele(bp);
1382                 spin_lock(&btp->bt_lru_lock);
1383         }
1384         spin_unlock(&btp->bt_lru_lock);
1385 }
1386
1387 int
1388 xfs_buftarg_shrink(
1389         struct shrinker         *shrink,
1390         struct shrink_control   *sc)
1391 {
1392         struct xfs_buftarg      *btp = container_of(shrink,
1393                                         struct xfs_buftarg, bt_shrinker);
1394         struct xfs_buf          *bp;
1395         int nr_to_scan = sc->nr_to_scan;
1396         LIST_HEAD(dispose);
1397
1398         if (!nr_to_scan)
1399                 return btp->bt_lru_nr;
1400
1401         spin_lock(&btp->bt_lru_lock);
1402         while (!list_empty(&btp->bt_lru)) {
1403                 if (nr_to_scan-- <= 0)
1404                         break;
1405
1406                 bp = list_first_entry(&btp->bt_lru, struct xfs_buf, b_lru);
1407
1408                 /*
1409                  * Decrement the b_lru_ref count unless the value is already
1410                  * zero. If the value is already zero, we need to reclaim the
1411                  * buffer, otherwise it gets another trip through the LRU.
1412                  */
1413                 if (!atomic_add_unless(&bp->b_lru_ref, -1, 0)) {
1414                         list_move_tail(&bp->b_lru, &btp->bt_lru);
1415                         continue;
1416                 }
1417
1418                 /*
1419                  * remove the buffer from the LRU now to avoid needing another
1420                  * lock round trip inside xfs_buf_rele().
1421                  */
1422                 list_move(&bp->b_lru, &dispose);
1423                 btp->bt_lru_nr--;
1424         }
1425         spin_unlock(&btp->bt_lru_lock);
1426
1427         while (!list_empty(&dispose)) {
1428                 bp = list_first_entry(&dispose, struct xfs_buf, b_lru);
1429                 list_del_init(&bp->b_lru);
1430                 xfs_buf_rele(bp);
1431         }
1432
1433         return btp->bt_lru_nr;
1434 }
1435
1436 void
1437 xfs_free_buftarg(
1438         struct xfs_mount        *mp,
1439         struct xfs_buftarg      *btp)
1440 {
1441         unregister_shrinker(&btp->bt_shrinker);
1442
1443         if (mp->m_flags & XFS_MOUNT_BARRIER)
1444                 xfs_blkdev_issue_flush(btp);
1445
1446         kmem_free(btp);
1447 }
1448
1449 STATIC int
1450 xfs_setsize_buftarg_flags(
1451         xfs_buftarg_t           *btp,
1452         unsigned int            blocksize,
1453         unsigned int            sectorsize,
1454         int                     verbose)
1455 {
1456         btp->bt_bsize = blocksize;
1457         btp->bt_sshift = ffs(sectorsize) - 1;
1458         btp->bt_smask = sectorsize - 1;
1459
1460         if (set_blocksize(btp->bt_bdev, sectorsize)) {
1461                 char name[BDEVNAME_SIZE];
1462
1463                 bdevname(btp->bt_bdev, name);
1464
1465                 xfs_warn(btp->bt_mount,
1466                         "Cannot set_blocksize to %u on device %s\n",
1467                         sectorsize, name);
1468                 return EINVAL;
1469         }
1470
1471         return 0;
1472 }
1473
1474 /*
1475  *      When allocating the initial buffer target we have not yet
1476  *      read in the superblock, so don't know what sized sectors
1477  *      are being used is at this early stage.  Play safe.
1478  */
1479 STATIC int
1480 xfs_setsize_buftarg_early(
1481         xfs_buftarg_t           *btp,
1482         struct block_device     *bdev)
1483 {
1484         return xfs_setsize_buftarg_flags(btp,
1485                         PAGE_SIZE, bdev_logical_block_size(bdev), 0);
1486 }
1487
1488 int
1489 xfs_setsize_buftarg(
1490         xfs_buftarg_t           *btp,
1491         unsigned int            blocksize,
1492         unsigned int            sectorsize)
1493 {
1494         return xfs_setsize_buftarg_flags(btp, blocksize, sectorsize, 1);
1495 }
1496
1497 xfs_buftarg_t *
1498 xfs_alloc_buftarg(
1499         struct xfs_mount        *mp,
1500         struct block_device     *bdev,
1501         int                     external,
1502         const char              *fsname)
1503 {
1504         xfs_buftarg_t           *btp;
1505
1506         btp = kmem_zalloc(sizeof(*btp), KM_SLEEP);
1507
1508         btp->bt_mount = mp;
1509         btp->bt_dev =  bdev->bd_dev;
1510         btp->bt_bdev = bdev;
1511         btp->bt_bdi = blk_get_backing_dev_info(bdev);
1512         if (!btp->bt_bdi)
1513                 goto error;
1514
1515         INIT_LIST_HEAD(&btp->bt_lru);
1516         spin_lock_init(&btp->bt_lru_lock);
1517         if (xfs_setsize_buftarg_early(btp, bdev))
1518                 goto error;
1519         btp->bt_shrinker.shrink = xfs_buftarg_shrink;
1520         btp->bt_shrinker.seeks = DEFAULT_SEEKS;
1521         register_shrinker(&btp->bt_shrinker);
1522         return btp;
1523
1524 error:
1525         kmem_free(btp);
1526         return NULL;
1527 }
1528
1529 /*
1530  * Add a buffer to the delayed write list.
1531  *
1532  * This queues a buffer for writeout if it hasn't already been.  Note that
1533  * neither this routine nor the buffer list submission functions perform
1534  * any internal synchronization.  It is expected that the lists are thread-local
1535  * to the callers.
1536  *
1537  * Returns true if we queued up the buffer, or false if it already had
1538  * been on the buffer list.
1539  */
1540 bool
1541 xfs_buf_delwri_queue(
1542         struct xfs_buf          *bp,
1543         struct list_head        *list)
1544 {
1545         ASSERT(xfs_buf_islocked(bp));
1546         ASSERT(!(bp->b_flags & XBF_READ));
1547
1548         /*
1549          * If the buffer is already marked delwri it already is queued up
1550          * by someone else for imediate writeout.  Just ignore it in that
1551          * case.
1552          */
1553         if (bp->b_flags & _XBF_DELWRI_Q) {
1554                 trace_xfs_buf_delwri_queued(bp, _RET_IP_);
1555                 return false;
1556         }
1557
1558         trace_xfs_buf_delwri_queue(bp, _RET_IP_);
1559
1560         /*
1561          * If a buffer gets written out synchronously or marked stale while it
1562          * is on a delwri list we lazily remove it. To do this, the other party
1563          * clears the  _XBF_DELWRI_Q flag but otherwise leaves the buffer alone.
1564          * It remains referenced and on the list.  In a rare corner case it
1565          * might get readded to a delwri list after the synchronous writeout, in
1566          * which case we need just need to re-add the flag here.
1567          */
1568         bp->b_flags |= _XBF_DELWRI_Q;
1569         if (list_empty(&bp->b_list)) {
1570                 atomic_inc(&bp->b_hold);
1571                 list_add_tail(&bp->b_list, list);
1572         }
1573
1574         return true;
1575 }
1576
1577 /*
1578  * Compare function is more complex than it needs to be because
1579  * the return value is only 32 bits and we are doing comparisons
1580  * on 64 bit values
1581  */
1582 static int
1583 xfs_buf_cmp(
1584         void            *priv,
1585         struct list_head *a,
1586         struct list_head *b)
1587 {
1588         struct xfs_buf  *ap = container_of(a, struct xfs_buf, b_list);
1589         struct xfs_buf  *bp = container_of(b, struct xfs_buf, b_list);
1590         xfs_daddr_t             diff;
1591
1592         diff = ap->b_bn - bp->b_bn;
1593         if (diff < 0)
1594                 return -1;
1595         if (diff > 0)
1596                 return 1;
1597         return 0;
1598 }
1599
1600 static int
1601 __xfs_buf_delwri_submit(
1602         struct list_head        *buffer_list,
1603         struct list_head        *io_list,
1604         bool                    wait)
1605 {
1606         struct blk_plug         plug;
1607         struct xfs_buf          *bp, *n;
1608         int                     pinned = 0;
1609
1610         list_for_each_entry_safe(bp, n, buffer_list, b_list) {
1611                 if (!wait) {
1612                         if (xfs_buf_ispinned(bp)) {
1613                                 pinned++;
1614                                 continue;
1615                         }
1616                         if (!xfs_buf_trylock(bp))
1617                                 continue;
1618                 } else {
1619                         xfs_buf_lock(bp);
1620                 }
1621
1622                 /*
1623                  * Someone else might have written the buffer synchronously or
1624                  * marked it stale in the meantime.  In that case only the
1625                  * _XBF_DELWRI_Q flag got cleared, and we have to drop the
1626                  * reference and remove it from the list here.
1627                  */
1628                 if (!(bp->b_flags & _XBF_DELWRI_Q)) {
1629                         list_del_init(&bp->b_list);
1630                         xfs_buf_relse(bp);
1631                         continue;
1632                 }
1633
1634                 list_move_tail(&bp->b_list, io_list);
1635                 trace_xfs_buf_delwri_split(bp, _RET_IP_);
1636         }
1637
1638         list_sort(NULL, io_list, xfs_buf_cmp);
1639
1640         blk_start_plug(&plug);
1641         list_for_each_entry_safe(bp, n, io_list, b_list) {
1642                 bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC);
1643                 bp->b_flags |= XBF_WRITE;
1644
1645                 if (!wait) {
1646                         bp->b_flags |= XBF_ASYNC;
1647                         list_del_init(&bp->b_list);
1648                 }
1649                 xfs_bdstrat_cb(bp);
1650         }
1651         blk_finish_plug(&plug);
1652
1653         return pinned;
1654 }
1655
1656 /*
1657  * Write out a buffer list asynchronously.
1658  *
1659  * This will take the @buffer_list, write all non-locked and non-pinned buffers
1660  * out and not wait for I/O completion on any of the buffers.  This interface
1661  * is only safely useable for callers that can track I/O completion by higher
1662  * level means, e.g. AIL pushing as the @buffer_list is consumed in this
1663  * function.
1664  */
1665 int
1666 xfs_buf_delwri_submit_nowait(
1667         struct list_head        *buffer_list)
1668 {
1669         LIST_HEAD               (io_list);
1670         return __xfs_buf_delwri_submit(buffer_list, &io_list, false);
1671 }
1672
1673 /*
1674  * Write out a buffer list synchronously.
1675  *
1676  * This will take the @buffer_list, write all buffers out and wait for I/O
1677  * completion on all of the buffers. @buffer_list is consumed by the function,
1678  * so callers must have some other way of tracking buffers if they require such
1679  * functionality.
1680  */
1681 int
1682 xfs_buf_delwri_submit(
1683         struct list_head        *buffer_list)
1684 {
1685         LIST_HEAD               (io_list);
1686         int                     error = 0, error2;
1687         struct xfs_buf          *bp;
1688
1689         __xfs_buf_delwri_submit(buffer_list, &io_list, true);
1690
1691         /* Wait for IO to complete. */
1692         while (!list_empty(&io_list)) {
1693                 bp = list_first_entry(&io_list, struct xfs_buf, b_list);
1694
1695                 list_del_init(&bp->b_list);
1696                 error2 = xfs_buf_iowait(bp);
1697                 xfs_buf_relse(bp);
1698                 if (!error)
1699                         error = error2;
1700         }
1701
1702         return error;
1703 }
1704
1705 int __init
1706 xfs_buf_init(void)
1707 {
1708         xfs_buf_zone = kmem_zone_init_flags(sizeof(xfs_buf_t), "xfs_buf",
1709                                                 KM_ZONE_HWALIGN, NULL);
1710         if (!xfs_buf_zone)
1711                 goto out;
1712
1713         xfslogd_workqueue = alloc_workqueue("xfslogd",
1714                                         WQ_MEM_RECLAIM | WQ_HIGHPRI, 1);
1715         if (!xfslogd_workqueue)
1716                 goto out_free_buf_zone;
1717
1718         return 0;
1719
1720  out_free_buf_zone:
1721         kmem_zone_destroy(xfs_buf_zone);
1722  out:
1723         return -ENOMEM;
1724 }
1725
1726 void
1727 xfs_buf_terminate(void)
1728 {
1729         destroy_workqueue(xfslogd_workqueue);
1730         kmem_zone_destroy(xfs_buf_zone);
1731 }