i2c: rockchip: fix power off issue for rk818
[firefly-linux-kernel-4.4.55.git] / drivers / md / dm-bufio.c
1 /*
2  * Copyright (C) 2009-2011 Red Hat, Inc.
3  *
4  * Author: Mikulas Patocka <mpatocka@redhat.com>
5  *
6  * This file is released under the GPL.
7  */
8
9 #include "dm-bufio.h"
10
11 #include <linux/device-mapper.h>
12 #include <linux/dm-io.h>
13 #include <linux/slab.h>
14 #include <linux/vmalloc.h>
15 #include <linux/shrinker.h>
16 #include <linux/module.h>
17
18 #define DM_MSG_PREFIX "bufio"
19
20 /*
21  * Memory management policy:
22  *      Limit the number of buffers to DM_BUFIO_MEMORY_PERCENT of main memory
23  *      or DM_BUFIO_VMALLOC_PERCENT of vmalloc memory (whichever is lower).
24  *      Always allocate at least DM_BUFIO_MIN_BUFFERS buffers.
25  *      Start background writeback when there are DM_BUFIO_WRITEBACK_PERCENT
26  *      dirty buffers.
27  */
28 #define DM_BUFIO_MIN_BUFFERS            8
29
30 #define DM_BUFIO_MEMORY_PERCENT         2
31 #define DM_BUFIO_VMALLOC_PERCENT        25
32 #define DM_BUFIO_WRITEBACK_PERCENT      75
33
34 /*
35  * Check buffer ages in this interval (seconds)
36  */
37 #define DM_BUFIO_WORK_TIMER_SECS        10
38
39 /*
40  * Free buffers when they are older than this (seconds)
41  */
42 #define DM_BUFIO_DEFAULT_AGE_SECS       60
43
44 /*
45  * The number of bvec entries that are embedded directly in the buffer.
46  * If the chunk size is larger, dm-io is used to do the io.
47  */
48 #define DM_BUFIO_INLINE_VECS            16
49
50 /*
51  * Buffer hash
52  */
53 #define DM_BUFIO_HASH_BITS      20
54 #define DM_BUFIO_HASH(block) \
55         ((((block) >> DM_BUFIO_HASH_BITS) ^ (block)) & \
56          ((1 << DM_BUFIO_HASH_BITS) - 1))
57
58 /*
59  * Don't try to use kmem_cache_alloc for blocks larger than this.
60  * For explanation, see alloc_buffer_data below.
61  */
62 #define DM_BUFIO_BLOCK_SIZE_SLAB_LIMIT  (PAGE_SIZE >> 1)
63 #define DM_BUFIO_BLOCK_SIZE_GFP_LIMIT   (PAGE_SIZE << (MAX_ORDER - 1))
64
65 /*
66  * dm_buffer->list_mode
67  */
68 #define LIST_CLEAN      0
69 #define LIST_DIRTY      1
70 #define LIST_SIZE       2
71
72 /*
73  * Linking of buffers:
74  *      All buffers are linked to cache_hash with their hash_list field.
75  *
76  *      Clean buffers that are not being written (B_WRITING not set)
77  *      are linked to lru[LIST_CLEAN] with their lru_list field.
78  *
79  *      Dirty and clean buffers that are being written are linked to
80  *      lru[LIST_DIRTY] with their lru_list field. When the write
81  *      finishes, the buffer cannot be relinked immediately (because we
82  *      are in an interrupt context and relinking requires process
83  *      context), so some clean-not-writing buffers can be held on
84  *      dirty_lru too.  They are later added to lru in the process
85  *      context.
86  */
87 struct dm_bufio_client {
88         struct mutex lock;
89
90         struct list_head lru[LIST_SIZE];
91         unsigned long n_buffers[LIST_SIZE];
92
93         struct block_device *bdev;
94         unsigned block_size;
95         unsigned char sectors_per_block_bits;
96         unsigned char pages_per_block_bits;
97         unsigned char blocks_per_page_bits;
98         unsigned aux_size;
99         void (*alloc_callback)(struct dm_buffer *);
100         void (*write_callback)(struct dm_buffer *);
101
102         struct dm_io_client *dm_io;
103
104         struct list_head reserved_buffers;
105         unsigned need_reserved_buffers;
106
107         struct hlist_head *cache_hash;
108         wait_queue_head_t free_buffer_wait;
109
110         int async_write_error;
111
112         struct list_head client_list;
113         struct shrinker shrinker;
114 };
115
116 /*
117  * Buffer state bits.
118  */
119 #define B_READING       0
120 #define B_WRITING       1
121 #define B_DIRTY         2
122
123 /*
124  * Describes how the block was allocated:
125  * kmem_cache_alloc(), __get_free_pages() or vmalloc().
126  * See the comment at alloc_buffer_data.
127  */
128 enum data_mode {
129         DATA_MODE_SLAB = 0,
130         DATA_MODE_GET_FREE_PAGES = 1,
131         DATA_MODE_VMALLOC = 2,
132         DATA_MODE_LIMIT = 3
133 };
134
135 struct dm_buffer {
136         struct hlist_node hash_list;
137         struct list_head lru_list;
138         sector_t block;
139         void *data;
140         enum data_mode data_mode;
141         unsigned char list_mode;                /* LIST_* */
142         unsigned hold_count;
143         int read_error;
144         int write_error;
145         unsigned long state;
146         unsigned long last_accessed;
147         struct dm_bufio_client *c;
148         struct bio bio;
149         struct bio_vec bio_vec[DM_BUFIO_INLINE_VECS];
150 };
151
152 /*----------------------------------------------------------------*/
153
154 static struct kmem_cache *dm_bufio_caches[PAGE_SHIFT - SECTOR_SHIFT];
155 static char *dm_bufio_cache_names[PAGE_SHIFT - SECTOR_SHIFT];
156
157 static inline int dm_bufio_cache_index(struct dm_bufio_client *c)
158 {
159         unsigned ret = c->blocks_per_page_bits - 1;
160
161         BUG_ON(ret >= ARRAY_SIZE(dm_bufio_caches));
162
163         return ret;
164 }
165
166 #define DM_BUFIO_CACHE(c)       (dm_bufio_caches[dm_bufio_cache_index(c)])
167 #define DM_BUFIO_CACHE_NAME(c)  (dm_bufio_cache_names[dm_bufio_cache_index(c)])
168
169 #define dm_bufio_in_request()   (!!current->bio_list)
170
171 static void dm_bufio_lock(struct dm_bufio_client *c)
172 {
173         mutex_lock_nested(&c->lock, dm_bufio_in_request());
174 }
175
176 static int dm_bufio_trylock(struct dm_bufio_client *c)
177 {
178         return mutex_trylock(&c->lock);
179 }
180
181 static void dm_bufio_unlock(struct dm_bufio_client *c)
182 {
183         mutex_unlock(&c->lock);
184 }
185
186 /*
187  * FIXME Move to sched.h?
188  */
189 #ifdef CONFIG_PREEMPT_VOLUNTARY
190 #  define dm_bufio_cond_resched()               \
191 do {                                            \
192         if (unlikely(need_resched()))           \
193                 _cond_resched();                \
194 } while (0)
195 #else
196 #  define dm_bufio_cond_resched()                do { } while (0)
197 #endif
198
199 /*----------------------------------------------------------------*/
200
201 /*
202  * Default cache size: available memory divided by the ratio.
203  */
204 static unsigned long dm_bufio_default_cache_size;
205
206 /*
207  * Total cache size set by the user.
208  */
209 static unsigned long dm_bufio_cache_size;
210
211 /*
212  * A copy of dm_bufio_cache_size because dm_bufio_cache_size can change
213  * at any time.  If it disagrees, the user has changed cache size.
214  */
215 static unsigned long dm_bufio_cache_size_latch;
216
217 static DEFINE_SPINLOCK(param_spinlock);
218
219 /*
220  * Buffers are freed after this timeout
221  */
222 static unsigned dm_bufio_max_age = DM_BUFIO_DEFAULT_AGE_SECS;
223
224 static unsigned long dm_bufio_peak_allocated;
225 static unsigned long dm_bufio_allocated_kmem_cache;
226 static unsigned long dm_bufio_allocated_get_free_pages;
227 static unsigned long dm_bufio_allocated_vmalloc;
228 static unsigned long dm_bufio_current_allocated;
229
230 /*----------------------------------------------------------------*/
231
232 /*
233  * Per-client cache: dm_bufio_cache_size / dm_bufio_client_count
234  */
235 static unsigned long dm_bufio_cache_size_per_client;
236
237 /*
238  * The current number of clients.
239  */
240 static int dm_bufio_client_count;
241
242 /*
243  * The list of all clients.
244  */
245 static LIST_HEAD(dm_bufio_all_clients);
246
247 /*
248  * This mutex protects dm_bufio_cache_size_latch,
249  * dm_bufio_cache_size_per_client and dm_bufio_client_count
250  */
251 static DEFINE_MUTEX(dm_bufio_clients_lock);
252
253 /*----------------------------------------------------------------*/
254
255 static void adjust_total_allocated(enum data_mode data_mode, long diff)
256 {
257         static unsigned long * const class_ptr[DATA_MODE_LIMIT] = {
258                 &dm_bufio_allocated_kmem_cache,
259                 &dm_bufio_allocated_get_free_pages,
260                 &dm_bufio_allocated_vmalloc,
261         };
262
263         spin_lock(&param_spinlock);
264
265         *class_ptr[data_mode] += diff;
266
267         dm_bufio_current_allocated += diff;
268
269         if (dm_bufio_current_allocated > dm_bufio_peak_allocated)
270                 dm_bufio_peak_allocated = dm_bufio_current_allocated;
271
272         spin_unlock(&param_spinlock);
273 }
274
275 /*
276  * Change the number of clients and recalculate per-client limit.
277  */
278 static void __cache_size_refresh(void)
279 {
280         BUG_ON(!mutex_is_locked(&dm_bufio_clients_lock));
281         BUG_ON(dm_bufio_client_count < 0);
282
283         dm_bufio_cache_size_latch = ACCESS_ONCE(dm_bufio_cache_size);
284
285         /*
286          * Use default if set to 0 and report the actual cache size used.
287          */
288         if (!dm_bufio_cache_size_latch) {
289                 (void)cmpxchg(&dm_bufio_cache_size, 0,
290                               dm_bufio_default_cache_size);
291                 dm_bufio_cache_size_latch = dm_bufio_default_cache_size;
292         }
293
294         dm_bufio_cache_size_per_client = dm_bufio_cache_size_latch /
295                                          (dm_bufio_client_count ? : 1);
296 }
297
298 /*
299  * Allocating buffer data.
300  *
301  * Small buffers are allocated with kmem_cache, to use space optimally.
302  *
303  * For large buffers, we choose between get_free_pages and vmalloc.
304  * Each has advantages and disadvantages.
305  *
306  * __get_free_pages can randomly fail if the memory is fragmented.
307  * __vmalloc won't randomly fail, but vmalloc space is limited (it may be
308  * as low as 128M) so using it for caching is not appropriate.
309  *
310  * If the allocation may fail we use __get_free_pages. Memory fragmentation
311  * won't have a fatal effect here, but it just causes flushes of some other
312  * buffers and more I/O will be performed. Don't use __get_free_pages if it
313  * always fails (i.e. order >= MAX_ORDER).
314  *
315  * If the allocation shouldn't fail we use __vmalloc. This is only for the
316  * initial reserve allocation, so there's no risk of wasting all vmalloc
317  * space.
318  */
319 static void *alloc_buffer_data(struct dm_bufio_client *c, gfp_t gfp_mask,
320                                enum data_mode *data_mode)
321 {
322         unsigned noio_flag;
323         void *ptr;
324
325         if (c->block_size <= DM_BUFIO_BLOCK_SIZE_SLAB_LIMIT) {
326                 *data_mode = DATA_MODE_SLAB;
327                 return kmem_cache_alloc(DM_BUFIO_CACHE(c), gfp_mask);
328         }
329
330         if (c->block_size <= DM_BUFIO_BLOCK_SIZE_GFP_LIMIT &&
331             gfp_mask & __GFP_NORETRY) {
332                 *data_mode = DATA_MODE_GET_FREE_PAGES;
333                 return (void *)__get_free_pages(gfp_mask,
334                                                 c->pages_per_block_bits);
335         }
336
337         *data_mode = DATA_MODE_VMALLOC;
338
339         /*
340          * __vmalloc allocates the data pages and auxiliary structures with
341          * gfp_flags that were specified, but pagetables are always allocated
342          * with GFP_KERNEL, no matter what was specified as gfp_mask.
343          *
344          * Consequently, we must set per-process flag PF_MEMALLOC_NOIO so that
345          * all allocations done by this process (including pagetables) are done
346          * as if GFP_NOIO was specified.
347          */
348
349         if (gfp_mask & __GFP_NORETRY)
350                 noio_flag = memalloc_noio_save();
351
352         ptr = __vmalloc(c->block_size, gfp_mask, PAGE_KERNEL);
353
354         if (gfp_mask & __GFP_NORETRY)
355                 memalloc_noio_restore(noio_flag);
356
357         return ptr;
358 }
359
360 /*
361  * Free buffer's data.
362  */
363 static void free_buffer_data(struct dm_bufio_client *c,
364                              void *data, enum data_mode data_mode)
365 {
366         switch (data_mode) {
367         case DATA_MODE_SLAB:
368                 kmem_cache_free(DM_BUFIO_CACHE(c), data);
369                 break;
370
371         case DATA_MODE_GET_FREE_PAGES:
372                 free_pages((unsigned long)data, c->pages_per_block_bits);
373                 break;
374
375         case DATA_MODE_VMALLOC:
376                 vfree(data);
377                 break;
378
379         default:
380                 DMCRIT("dm_bufio_free_buffer_data: bad data mode: %d",
381                        data_mode);
382                 BUG();
383         }
384 }
385
386 /*
387  * Allocate buffer and its data.
388  */
389 static struct dm_buffer *alloc_buffer(struct dm_bufio_client *c, gfp_t gfp_mask)
390 {
391         struct dm_buffer *b = kmalloc(sizeof(struct dm_buffer) + c->aux_size,
392                                       gfp_mask);
393
394         if (!b)
395                 return NULL;
396
397         b->c = c;
398
399         b->data = alloc_buffer_data(c, gfp_mask, &b->data_mode);
400         if (!b->data) {
401                 kfree(b);
402                 return NULL;
403         }
404
405         adjust_total_allocated(b->data_mode, (long)c->block_size);
406
407         return b;
408 }
409
410 /*
411  * Free buffer and its data.
412  */
413 static void free_buffer(struct dm_buffer *b)
414 {
415         struct dm_bufio_client *c = b->c;
416
417         adjust_total_allocated(b->data_mode, -(long)c->block_size);
418
419         free_buffer_data(c, b->data, b->data_mode);
420         kfree(b);
421 }
422
423 /*
424  * Link buffer to the hash list and clean or dirty queue.
425  */
426 static void __link_buffer(struct dm_buffer *b, sector_t block, int dirty)
427 {
428         struct dm_bufio_client *c = b->c;
429
430         c->n_buffers[dirty]++;
431         b->block = block;
432         b->list_mode = dirty;
433         list_add(&b->lru_list, &c->lru[dirty]);
434         hlist_add_head(&b->hash_list, &c->cache_hash[DM_BUFIO_HASH(block)]);
435         b->last_accessed = jiffies;
436 }
437
438 /*
439  * Unlink buffer from the hash list and dirty or clean queue.
440  */
441 static void __unlink_buffer(struct dm_buffer *b)
442 {
443         struct dm_bufio_client *c = b->c;
444
445         BUG_ON(!c->n_buffers[b->list_mode]);
446
447         c->n_buffers[b->list_mode]--;
448         hlist_del(&b->hash_list);
449         list_del(&b->lru_list);
450 }
451
452 /*
453  * Place the buffer to the head of dirty or clean LRU queue.
454  */
455 static void __relink_lru(struct dm_buffer *b, int dirty)
456 {
457         struct dm_bufio_client *c = b->c;
458
459         BUG_ON(!c->n_buffers[b->list_mode]);
460
461         c->n_buffers[b->list_mode]--;
462         c->n_buffers[dirty]++;
463         b->list_mode = dirty;
464         list_move(&b->lru_list, &c->lru[dirty]);
465         b->last_accessed = jiffies;
466 }
467
468 /*----------------------------------------------------------------
469  * Submit I/O on the buffer.
470  *
471  * Bio interface is faster but it has some problems:
472  *      the vector list is limited (increasing this limit increases
473  *      memory-consumption per buffer, so it is not viable);
474  *
475  *      the memory must be direct-mapped, not vmalloced;
476  *
477  *      the I/O driver can reject requests spuriously if it thinks that
478  *      the requests are too big for the device or if they cross a
479  *      controller-defined memory boundary.
480  *
481  * If the buffer is small enough (up to DM_BUFIO_INLINE_VECS pages) and
482  * it is not vmalloced, try using the bio interface.
483  *
484  * If the buffer is big, if it is vmalloced or if the underlying device
485  * rejects the bio because it is too large, use dm-io layer to do the I/O.
486  * The dm-io layer splits the I/O into multiple requests, avoiding the above
487  * shortcomings.
488  *--------------------------------------------------------------*/
489
490 /*
491  * dm-io completion routine. It just calls b->bio.bi_end_io, pretending
492  * that the request was handled directly with bio interface.
493  */
494 static void dmio_complete(unsigned long error, void *context)
495 {
496         struct dm_buffer *b = context;
497
498         b->bio.bi_end_io(&b->bio, error ? -EIO : 0);
499 }
500
501 static void use_dmio(struct dm_buffer *b, int rw, sector_t block,
502                      bio_end_io_t *end_io)
503 {
504         int r;
505         struct dm_io_request io_req = {
506                 .bi_rw = rw,
507                 .notify.fn = dmio_complete,
508                 .notify.context = b,
509                 .client = b->c->dm_io,
510         };
511         struct dm_io_region region = {
512                 .bdev = b->c->bdev,
513                 .sector = block << b->c->sectors_per_block_bits,
514                 .count = b->c->block_size >> SECTOR_SHIFT,
515         };
516
517         if (b->data_mode != DATA_MODE_VMALLOC) {
518                 io_req.mem.type = DM_IO_KMEM;
519                 io_req.mem.ptr.addr = b->data;
520         } else {
521                 io_req.mem.type = DM_IO_VMA;
522                 io_req.mem.ptr.vma = b->data;
523         }
524
525         b->bio.bi_end_io = end_io;
526
527         r = dm_io(&io_req, 1, &region, NULL);
528         if (r)
529                 end_io(&b->bio, r);
530 }
531
532 static void inline_endio(struct bio *bio, int error)
533 {
534         bio_end_io_t *end_fn = bio->bi_private;
535
536         /*
537          * Reset the bio to free any attached resources
538          * (e.g. bio integrity profiles).
539          */
540         bio_reset(bio);
541
542         end_fn(bio, error);
543 }
544
545 static void use_inline_bio(struct dm_buffer *b, int rw, sector_t block,
546                            bio_end_io_t *end_io)
547 {
548         char *ptr;
549         int len;
550
551         bio_init(&b->bio);
552         b->bio.bi_io_vec = b->bio_vec;
553         b->bio.bi_max_vecs = DM_BUFIO_INLINE_VECS;
554         b->bio.bi_sector = block << b->c->sectors_per_block_bits;
555         b->bio.bi_bdev = b->c->bdev;
556         b->bio.bi_end_io = inline_endio;
557         /*
558          * Use of .bi_private isn't a problem here because
559          * the dm_buffer's inline bio is local to bufio.
560          */
561         b->bio.bi_private = end_io;
562
563         /*
564          * We assume that if len >= PAGE_SIZE ptr is page-aligned.
565          * If len < PAGE_SIZE the buffer doesn't cross page boundary.
566          */
567         ptr = b->data;
568         len = b->c->block_size;
569
570         if (len >= PAGE_SIZE)
571                 BUG_ON((unsigned long)ptr & (PAGE_SIZE - 1));
572         else
573                 BUG_ON((unsigned long)ptr & (len - 1));
574
575         do {
576                 if (!bio_add_page(&b->bio, virt_to_page(ptr),
577                                   len < PAGE_SIZE ? len : PAGE_SIZE,
578                                   virt_to_phys(ptr) & (PAGE_SIZE - 1))) {
579                         BUG_ON(b->c->block_size <= PAGE_SIZE);
580                         use_dmio(b, rw, block, end_io);
581                         return;
582                 }
583
584                 len -= PAGE_SIZE;
585                 ptr += PAGE_SIZE;
586         } while (len > 0);
587
588         submit_bio(rw, &b->bio);
589 }
590
591 static void submit_io(struct dm_buffer *b, int rw, sector_t block,
592                       bio_end_io_t *end_io)
593 {
594         if (rw == WRITE && b->c->write_callback)
595                 b->c->write_callback(b);
596
597         if (b->c->block_size <= DM_BUFIO_INLINE_VECS * PAGE_SIZE &&
598             b->data_mode != DATA_MODE_VMALLOC)
599                 use_inline_bio(b, rw, block, end_io);
600         else
601                 use_dmio(b, rw, block, end_io);
602 }
603
604 /*----------------------------------------------------------------
605  * Writing dirty buffers
606  *--------------------------------------------------------------*/
607
608 /*
609  * The endio routine for write.
610  *
611  * Set the error, clear B_WRITING bit and wake anyone who was waiting on
612  * it.
613  */
614 static void write_endio(struct bio *bio, int error)
615 {
616         struct dm_buffer *b = container_of(bio, struct dm_buffer, bio);
617
618         b->write_error = error;
619         if (unlikely(error)) {
620                 struct dm_bufio_client *c = b->c;
621                 (void)cmpxchg(&c->async_write_error, 0, error);
622         }
623
624         BUG_ON(!test_bit(B_WRITING, &b->state));
625
626         smp_mb__before_clear_bit();
627         clear_bit(B_WRITING, &b->state);
628         smp_mb__after_clear_bit();
629
630         wake_up_bit(&b->state, B_WRITING);
631 }
632
633 /*
634  * This function is called when wait_on_bit is actually waiting.
635  */
636 static int do_io_schedule(void *word)
637 {
638         io_schedule();
639
640         return 0;
641 }
642
643 /*
644  * Initiate a write on a dirty buffer, but don't wait for it.
645  *
646  * - If the buffer is not dirty, exit.
647  * - If there some previous write going on, wait for it to finish (we can't
648  *   have two writes on the same buffer simultaneously).
649  * - Submit our write and don't wait on it. We set B_WRITING indicating
650  *   that there is a write in progress.
651  */
652 static void __write_dirty_buffer(struct dm_buffer *b)
653 {
654         if (!test_bit(B_DIRTY, &b->state))
655                 return;
656
657         clear_bit(B_DIRTY, &b->state);
658         wait_on_bit_lock(&b->state, B_WRITING,
659                          do_io_schedule, TASK_UNINTERRUPTIBLE);
660
661         submit_io(b, WRITE, b->block, write_endio);
662 }
663
664 /*
665  * Wait until any activity on the buffer finishes.  Possibly write the
666  * buffer if it is dirty.  When this function finishes, there is no I/O
667  * running on the buffer and the buffer is not dirty.
668  */
669 static void __make_buffer_clean(struct dm_buffer *b)
670 {
671         BUG_ON(b->hold_count);
672
673         if (!b->state)  /* fast case */
674                 return;
675
676         wait_on_bit(&b->state, B_READING, do_io_schedule, TASK_UNINTERRUPTIBLE);
677         __write_dirty_buffer(b);
678         wait_on_bit(&b->state, B_WRITING, do_io_schedule, TASK_UNINTERRUPTIBLE);
679 }
680
681 /*
682  * Find some buffer that is not held by anybody, clean it, unlink it and
683  * return it.
684  */
685 static struct dm_buffer *__get_unclaimed_buffer(struct dm_bufio_client *c)
686 {
687         struct dm_buffer *b;
688
689         list_for_each_entry_reverse(b, &c->lru[LIST_CLEAN], lru_list) {
690                 BUG_ON(test_bit(B_WRITING, &b->state));
691                 BUG_ON(test_bit(B_DIRTY, &b->state));
692
693                 if (!b->hold_count) {
694                         __make_buffer_clean(b);
695                         __unlink_buffer(b);
696                         return b;
697                 }
698                 dm_bufio_cond_resched();
699         }
700
701         list_for_each_entry_reverse(b, &c->lru[LIST_DIRTY], lru_list) {
702                 BUG_ON(test_bit(B_READING, &b->state));
703
704                 if (!b->hold_count) {
705                         __make_buffer_clean(b);
706                         __unlink_buffer(b);
707                         return b;
708                 }
709                 dm_bufio_cond_resched();
710         }
711
712         return NULL;
713 }
714
715 /*
716  * Wait until some other threads free some buffer or release hold count on
717  * some buffer.
718  *
719  * This function is entered with c->lock held, drops it and regains it
720  * before exiting.
721  */
722 static void __wait_for_free_buffer(struct dm_bufio_client *c)
723 {
724         DECLARE_WAITQUEUE(wait, current);
725
726         add_wait_queue(&c->free_buffer_wait, &wait);
727         set_task_state(current, TASK_UNINTERRUPTIBLE);
728         dm_bufio_unlock(c);
729
730         io_schedule();
731
732         set_task_state(current, TASK_RUNNING);
733         remove_wait_queue(&c->free_buffer_wait, &wait);
734
735         dm_bufio_lock(c);
736 }
737
738 enum new_flag {
739         NF_FRESH = 0,
740         NF_READ = 1,
741         NF_GET = 2,
742         NF_PREFETCH = 3
743 };
744
745 /*
746  * Allocate a new buffer. If the allocation is not possible, wait until
747  * some other thread frees a buffer.
748  *
749  * May drop the lock and regain it.
750  */
751 static struct dm_buffer *__alloc_buffer_wait_no_callback(struct dm_bufio_client *c, enum new_flag nf)
752 {
753         struct dm_buffer *b;
754
755         /*
756          * dm-bufio is resistant to allocation failures (it just keeps
757          * one buffer reserved in cases all the allocations fail).
758          * So set flags to not try too hard:
759          *      GFP_NOIO: don't recurse into the I/O layer
760          *      __GFP_NORETRY: don't retry and rather return failure
761          *      __GFP_NOMEMALLOC: don't use emergency reserves
762          *      __GFP_NOWARN: don't print a warning in case of failure
763          *
764          * For debugging, if we set the cache size to 1, no new buffers will
765          * be allocated.
766          */
767         while (1) {
768                 if (dm_bufio_cache_size_latch != 1) {
769                         b = alloc_buffer(c, GFP_NOIO | __GFP_NORETRY | __GFP_NOMEMALLOC | __GFP_NOWARN);
770                         if (b)
771                                 return b;
772                 }
773
774                 if (nf == NF_PREFETCH)
775                         return NULL;
776
777                 if (!list_empty(&c->reserved_buffers)) {
778                         b = list_entry(c->reserved_buffers.next,
779                                        struct dm_buffer, lru_list);
780                         list_del(&b->lru_list);
781                         c->need_reserved_buffers++;
782
783                         return b;
784                 }
785
786                 b = __get_unclaimed_buffer(c);
787                 if (b)
788                         return b;
789
790                 __wait_for_free_buffer(c);
791         }
792 }
793
794 static struct dm_buffer *__alloc_buffer_wait(struct dm_bufio_client *c, enum new_flag nf)
795 {
796         struct dm_buffer *b = __alloc_buffer_wait_no_callback(c, nf);
797
798         if (!b)
799                 return NULL;
800
801         if (c->alloc_callback)
802                 c->alloc_callback(b);
803
804         return b;
805 }
806
807 /*
808  * Free a buffer and wake other threads waiting for free buffers.
809  */
810 static void __free_buffer_wake(struct dm_buffer *b)
811 {
812         struct dm_bufio_client *c = b->c;
813
814         if (!c->need_reserved_buffers)
815                 free_buffer(b);
816         else {
817                 list_add(&b->lru_list, &c->reserved_buffers);
818                 c->need_reserved_buffers--;
819         }
820
821         wake_up(&c->free_buffer_wait);
822 }
823
824 static void __write_dirty_buffers_async(struct dm_bufio_client *c, int no_wait)
825 {
826         struct dm_buffer *b, *tmp;
827
828         list_for_each_entry_safe_reverse(b, tmp, &c->lru[LIST_DIRTY], lru_list) {
829                 BUG_ON(test_bit(B_READING, &b->state));
830
831                 if (!test_bit(B_DIRTY, &b->state) &&
832                     !test_bit(B_WRITING, &b->state)) {
833                         __relink_lru(b, LIST_CLEAN);
834                         continue;
835                 }
836
837                 if (no_wait && test_bit(B_WRITING, &b->state))
838                         return;
839
840                 __write_dirty_buffer(b);
841                 dm_bufio_cond_resched();
842         }
843 }
844
845 /*
846  * Get writeback threshold and buffer limit for a given client.
847  */
848 static void __get_memory_limit(struct dm_bufio_client *c,
849                                unsigned long *threshold_buffers,
850                                unsigned long *limit_buffers)
851 {
852         unsigned long buffers;
853
854         if (ACCESS_ONCE(dm_bufio_cache_size) != dm_bufio_cache_size_latch) {
855                 mutex_lock(&dm_bufio_clients_lock);
856                 __cache_size_refresh();
857                 mutex_unlock(&dm_bufio_clients_lock);
858         }
859
860         buffers = dm_bufio_cache_size_per_client >>
861                   (c->sectors_per_block_bits + SECTOR_SHIFT);
862
863         if (buffers < DM_BUFIO_MIN_BUFFERS)
864                 buffers = DM_BUFIO_MIN_BUFFERS;
865
866         *limit_buffers = buffers;
867         *threshold_buffers = buffers * DM_BUFIO_WRITEBACK_PERCENT / 100;
868 }
869
870 /*
871  * Check if we're over watermark.
872  * If we are over threshold_buffers, start freeing buffers.
873  * If we're over "limit_buffers", block until we get under the limit.
874  */
875 static void __check_watermark(struct dm_bufio_client *c)
876 {
877         unsigned long threshold_buffers, limit_buffers;
878
879         __get_memory_limit(c, &threshold_buffers, &limit_buffers);
880
881         while (c->n_buffers[LIST_CLEAN] + c->n_buffers[LIST_DIRTY] >
882                limit_buffers) {
883
884                 struct dm_buffer *b = __get_unclaimed_buffer(c);
885
886                 if (!b)
887                         return;
888
889                 __free_buffer_wake(b);
890                 dm_bufio_cond_resched();
891         }
892
893         if (c->n_buffers[LIST_DIRTY] > threshold_buffers)
894                 __write_dirty_buffers_async(c, 1);
895 }
896
897 /*
898  * Find a buffer in the hash.
899  */
900 static struct dm_buffer *__find(struct dm_bufio_client *c, sector_t block)
901 {
902         struct dm_buffer *b;
903
904         hlist_for_each_entry(b, &c->cache_hash[DM_BUFIO_HASH(block)],
905                              hash_list) {
906                 dm_bufio_cond_resched();
907                 if (b->block == block)
908                         return b;
909         }
910
911         return NULL;
912 }
913
914 /*----------------------------------------------------------------
915  * Getting a buffer
916  *--------------------------------------------------------------*/
917
918 static struct dm_buffer *__bufio_new(struct dm_bufio_client *c, sector_t block,
919                                      enum new_flag nf, int *need_submit)
920 {
921         struct dm_buffer *b, *new_b = NULL;
922
923         *need_submit = 0;
924
925         b = __find(c, block);
926         if (b)
927                 goto found_buffer;
928
929         if (nf == NF_GET)
930                 return NULL;
931
932         new_b = __alloc_buffer_wait(c, nf);
933         if (!new_b)
934                 return NULL;
935
936         /*
937          * We've had a period where the mutex was unlocked, so need to
938          * recheck the hash table.
939          */
940         b = __find(c, block);
941         if (b) {
942                 __free_buffer_wake(new_b);
943                 goto found_buffer;
944         }
945
946         __check_watermark(c);
947
948         b = new_b;
949         b->hold_count = 1;
950         b->read_error = 0;
951         b->write_error = 0;
952         __link_buffer(b, block, LIST_CLEAN);
953
954         if (nf == NF_FRESH) {
955                 b->state = 0;
956                 return b;
957         }
958
959         b->state = 1 << B_READING;
960         *need_submit = 1;
961
962         return b;
963
964 found_buffer:
965         if (nf == NF_PREFETCH)
966                 return NULL;
967         /*
968          * Note: it is essential that we don't wait for the buffer to be
969          * read if dm_bufio_get function is used. Both dm_bufio_get and
970          * dm_bufio_prefetch can be used in the driver request routine.
971          * If the user called both dm_bufio_prefetch and dm_bufio_get on
972          * the same buffer, it would deadlock if we waited.
973          */
974         if (nf == NF_GET && unlikely(test_bit(B_READING, &b->state)))
975                 return NULL;
976
977         b->hold_count++;
978         __relink_lru(b, test_bit(B_DIRTY, &b->state) ||
979                      test_bit(B_WRITING, &b->state));
980         return b;
981 }
982
983 /*
984  * The endio routine for reading: set the error, clear the bit and wake up
985  * anyone waiting on the buffer.
986  */
987 static void read_endio(struct bio *bio, int error)
988 {
989         struct dm_buffer *b = container_of(bio, struct dm_buffer, bio);
990
991         b->read_error = error;
992
993         BUG_ON(!test_bit(B_READING, &b->state));
994
995         smp_mb__before_clear_bit();
996         clear_bit(B_READING, &b->state);
997         smp_mb__after_clear_bit();
998
999         wake_up_bit(&b->state, B_READING);
1000 }
1001
1002 /*
1003  * A common routine for dm_bufio_new and dm_bufio_read.  Operation of these
1004  * functions is similar except that dm_bufio_new doesn't read the
1005  * buffer from the disk (assuming that the caller overwrites all the data
1006  * and uses dm_bufio_mark_buffer_dirty to write new data back).
1007  */
1008 static void *new_read(struct dm_bufio_client *c, sector_t block,
1009                       enum new_flag nf, struct dm_buffer **bp)
1010 {
1011         int need_submit;
1012         struct dm_buffer *b;
1013
1014         dm_bufio_lock(c);
1015         b = __bufio_new(c, block, nf, &need_submit);
1016         dm_bufio_unlock(c);
1017
1018         if (!b)
1019                 return b;
1020
1021         if (need_submit)
1022                 submit_io(b, READ, b->block, read_endio);
1023
1024         wait_on_bit(&b->state, B_READING, do_io_schedule, TASK_UNINTERRUPTIBLE);
1025
1026         if (b->read_error) {
1027                 int error = b->read_error;
1028
1029                 dm_bufio_release(b);
1030
1031                 return ERR_PTR(error);
1032         }
1033
1034         *bp = b;
1035
1036         return b->data;
1037 }
1038
1039 void *dm_bufio_get(struct dm_bufio_client *c, sector_t block,
1040                    struct dm_buffer **bp)
1041 {
1042         return new_read(c, block, NF_GET, bp);
1043 }
1044 EXPORT_SYMBOL_GPL(dm_bufio_get);
1045
1046 void *dm_bufio_read(struct dm_bufio_client *c, sector_t block,
1047                     struct dm_buffer **bp)
1048 {
1049         BUG_ON(dm_bufio_in_request());
1050
1051         return new_read(c, block, NF_READ, bp);
1052 }
1053 EXPORT_SYMBOL_GPL(dm_bufio_read);
1054
1055 void *dm_bufio_new(struct dm_bufio_client *c, sector_t block,
1056                    struct dm_buffer **bp)
1057 {
1058         BUG_ON(dm_bufio_in_request());
1059
1060         return new_read(c, block, NF_FRESH, bp);
1061 }
1062 EXPORT_SYMBOL_GPL(dm_bufio_new);
1063
1064 void dm_bufio_prefetch(struct dm_bufio_client *c,
1065                        sector_t block, unsigned n_blocks)
1066 {
1067         struct blk_plug plug;
1068
1069         BUG_ON(dm_bufio_in_request());
1070
1071         blk_start_plug(&plug);
1072         dm_bufio_lock(c);
1073
1074         for (; n_blocks--; block++) {
1075                 int need_submit;
1076                 struct dm_buffer *b;
1077                 b = __bufio_new(c, block, NF_PREFETCH, &need_submit);
1078                 if (unlikely(b != NULL)) {
1079                         dm_bufio_unlock(c);
1080
1081                         if (need_submit)
1082                                 submit_io(b, READ, b->block, read_endio);
1083                         dm_bufio_release(b);
1084
1085                         dm_bufio_cond_resched();
1086
1087                         if (!n_blocks)
1088                                 goto flush_plug;
1089                         dm_bufio_lock(c);
1090                 }
1091
1092         }
1093
1094         dm_bufio_unlock(c);
1095
1096 flush_plug:
1097         blk_finish_plug(&plug);
1098 }
1099 EXPORT_SYMBOL_GPL(dm_bufio_prefetch);
1100
1101 void dm_bufio_release(struct dm_buffer *b)
1102 {
1103         struct dm_bufio_client *c = b->c;
1104
1105         dm_bufio_lock(c);
1106
1107         BUG_ON(!b->hold_count);
1108
1109         b->hold_count--;
1110         if (!b->hold_count) {
1111                 wake_up(&c->free_buffer_wait);
1112
1113                 /*
1114                  * If there were errors on the buffer, and the buffer is not
1115                  * to be written, free the buffer. There is no point in caching
1116                  * invalid buffer.
1117                  */
1118                 if ((b->read_error || b->write_error) &&
1119                     !test_bit(B_READING, &b->state) &&
1120                     !test_bit(B_WRITING, &b->state) &&
1121                     !test_bit(B_DIRTY, &b->state)) {
1122                         __unlink_buffer(b);
1123                         __free_buffer_wake(b);
1124                 }
1125         }
1126
1127         dm_bufio_unlock(c);
1128 }
1129 EXPORT_SYMBOL_GPL(dm_bufio_release);
1130
1131 void dm_bufio_mark_buffer_dirty(struct dm_buffer *b)
1132 {
1133         struct dm_bufio_client *c = b->c;
1134
1135         dm_bufio_lock(c);
1136
1137         BUG_ON(test_bit(B_READING, &b->state));
1138
1139         if (!test_and_set_bit(B_DIRTY, &b->state))
1140                 __relink_lru(b, LIST_DIRTY);
1141
1142         dm_bufio_unlock(c);
1143 }
1144 EXPORT_SYMBOL_GPL(dm_bufio_mark_buffer_dirty);
1145
1146 void dm_bufio_write_dirty_buffers_async(struct dm_bufio_client *c)
1147 {
1148         BUG_ON(dm_bufio_in_request());
1149
1150         dm_bufio_lock(c);
1151         __write_dirty_buffers_async(c, 0);
1152         dm_bufio_unlock(c);
1153 }
1154 EXPORT_SYMBOL_GPL(dm_bufio_write_dirty_buffers_async);
1155
1156 /*
1157  * For performance, it is essential that the buffers are written asynchronously
1158  * and simultaneously (so that the block layer can merge the writes) and then
1159  * waited upon.
1160  *
1161  * Finally, we flush hardware disk cache.
1162  */
1163 int dm_bufio_write_dirty_buffers(struct dm_bufio_client *c)
1164 {
1165         int a, f;
1166         unsigned long buffers_processed = 0;
1167         struct dm_buffer *b, *tmp;
1168
1169         dm_bufio_lock(c);
1170         __write_dirty_buffers_async(c, 0);
1171
1172 again:
1173         list_for_each_entry_safe_reverse(b, tmp, &c->lru[LIST_DIRTY], lru_list) {
1174                 int dropped_lock = 0;
1175
1176                 if (buffers_processed < c->n_buffers[LIST_DIRTY])
1177                         buffers_processed++;
1178
1179                 BUG_ON(test_bit(B_READING, &b->state));
1180
1181                 if (test_bit(B_WRITING, &b->state)) {
1182                         if (buffers_processed < c->n_buffers[LIST_DIRTY]) {
1183                                 dropped_lock = 1;
1184                                 b->hold_count++;
1185                                 dm_bufio_unlock(c);
1186                                 wait_on_bit(&b->state, B_WRITING,
1187                                             do_io_schedule,
1188                                             TASK_UNINTERRUPTIBLE);
1189                                 dm_bufio_lock(c);
1190                                 b->hold_count--;
1191                         } else
1192                                 wait_on_bit(&b->state, B_WRITING,
1193                                             do_io_schedule,
1194                                             TASK_UNINTERRUPTIBLE);
1195                 }
1196
1197                 if (!test_bit(B_DIRTY, &b->state) &&
1198                     !test_bit(B_WRITING, &b->state))
1199                         __relink_lru(b, LIST_CLEAN);
1200
1201                 dm_bufio_cond_resched();
1202
1203                 /*
1204                  * If we dropped the lock, the list is no longer consistent,
1205                  * so we must restart the search.
1206                  *
1207                  * In the most common case, the buffer just processed is
1208                  * relinked to the clean list, so we won't loop scanning the
1209                  * same buffer again and again.
1210                  *
1211                  * This may livelock if there is another thread simultaneously
1212                  * dirtying buffers, so we count the number of buffers walked
1213                  * and if it exceeds the total number of buffers, it means that
1214                  * someone is doing some writes simultaneously with us.  In
1215                  * this case, stop, dropping the lock.
1216                  */
1217                 if (dropped_lock)
1218                         goto again;
1219         }
1220         wake_up(&c->free_buffer_wait);
1221         dm_bufio_unlock(c);
1222
1223         a = xchg(&c->async_write_error, 0);
1224         f = dm_bufio_issue_flush(c);
1225         if (a)
1226                 return a;
1227
1228         return f;
1229 }
1230 EXPORT_SYMBOL_GPL(dm_bufio_write_dirty_buffers);
1231
1232 /*
1233  * Use dm-io to send and empty barrier flush the device.
1234  */
1235 int dm_bufio_issue_flush(struct dm_bufio_client *c)
1236 {
1237         struct dm_io_request io_req = {
1238                 .bi_rw = WRITE_FLUSH,
1239                 .mem.type = DM_IO_KMEM,
1240                 .mem.ptr.addr = NULL,
1241                 .client = c->dm_io,
1242         };
1243         struct dm_io_region io_reg = {
1244                 .bdev = c->bdev,
1245                 .sector = 0,
1246                 .count = 0,
1247         };
1248
1249         BUG_ON(dm_bufio_in_request());
1250
1251         return dm_io(&io_req, 1, &io_reg, NULL);
1252 }
1253 EXPORT_SYMBOL_GPL(dm_bufio_issue_flush);
1254
1255 /*
1256  * We first delete any other buffer that may be at that new location.
1257  *
1258  * Then, we write the buffer to the original location if it was dirty.
1259  *
1260  * Then, if we are the only one who is holding the buffer, relink the buffer
1261  * in the hash queue for the new location.
1262  *
1263  * If there was someone else holding the buffer, we write it to the new
1264  * location but not relink it, because that other user needs to have the buffer
1265  * at the same place.
1266  */
1267 void dm_bufio_release_move(struct dm_buffer *b, sector_t new_block)
1268 {
1269         struct dm_bufio_client *c = b->c;
1270         struct dm_buffer *new;
1271
1272         BUG_ON(dm_bufio_in_request());
1273
1274         dm_bufio_lock(c);
1275
1276 retry:
1277         new = __find(c, new_block);
1278         if (new) {
1279                 if (new->hold_count) {
1280                         __wait_for_free_buffer(c);
1281                         goto retry;
1282                 }
1283
1284                 /*
1285                  * FIXME: Is there any point waiting for a write that's going
1286                  * to be overwritten in a bit?
1287                  */
1288                 __make_buffer_clean(new);
1289                 __unlink_buffer(new);
1290                 __free_buffer_wake(new);
1291         }
1292
1293         BUG_ON(!b->hold_count);
1294         BUG_ON(test_bit(B_READING, &b->state));
1295
1296         __write_dirty_buffer(b);
1297         if (b->hold_count == 1) {
1298                 wait_on_bit(&b->state, B_WRITING,
1299                             do_io_schedule, TASK_UNINTERRUPTIBLE);
1300                 set_bit(B_DIRTY, &b->state);
1301                 __unlink_buffer(b);
1302                 __link_buffer(b, new_block, LIST_DIRTY);
1303         } else {
1304                 sector_t old_block;
1305                 wait_on_bit_lock(&b->state, B_WRITING,
1306                                  do_io_schedule, TASK_UNINTERRUPTIBLE);
1307                 /*
1308                  * Relink buffer to "new_block" so that write_callback
1309                  * sees "new_block" as a block number.
1310                  * After the write, link the buffer back to old_block.
1311                  * All this must be done in bufio lock, so that block number
1312                  * change isn't visible to other threads.
1313                  */
1314                 old_block = b->block;
1315                 __unlink_buffer(b);
1316                 __link_buffer(b, new_block, b->list_mode);
1317                 submit_io(b, WRITE, new_block, write_endio);
1318                 wait_on_bit(&b->state, B_WRITING,
1319                             do_io_schedule, TASK_UNINTERRUPTIBLE);
1320                 __unlink_buffer(b);
1321                 __link_buffer(b, old_block, b->list_mode);
1322         }
1323
1324         dm_bufio_unlock(c);
1325         dm_bufio_release(b);
1326 }
1327 EXPORT_SYMBOL_GPL(dm_bufio_release_move);
1328
1329 unsigned dm_bufio_get_block_size(struct dm_bufio_client *c)
1330 {
1331         return c->block_size;
1332 }
1333 EXPORT_SYMBOL_GPL(dm_bufio_get_block_size);
1334
1335 sector_t dm_bufio_get_device_size(struct dm_bufio_client *c)
1336 {
1337         return i_size_read(c->bdev->bd_inode) >>
1338                            (SECTOR_SHIFT + c->sectors_per_block_bits);
1339 }
1340 EXPORT_SYMBOL_GPL(dm_bufio_get_device_size);
1341
1342 sector_t dm_bufio_get_block_number(struct dm_buffer *b)
1343 {
1344         return b->block;
1345 }
1346 EXPORT_SYMBOL_GPL(dm_bufio_get_block_number);
1347
1348 void *dm_bufio_get_block_data(struct dm_buffer *b)
1349 {
1350         return b->data;
1351 }
1352 EXPORT_SYMBOL_GPL(dm_bufio_get_block_data);
1353
1354 void *dm_bufio_get_aux_data(struct dm_buffer *b)
1355 {
1356         return b + 1;
1357 }
1358 EXPORT_SYMBOL_GPL(dm_bufio_get_aux_data);
1359
1360 struct dm_bufio_client *dm_bufio_get_client(struct dm_buffer *b)
1361 {
1362         return b->c;
1363 }
1364 EXPORT_SYMBOL_GPL(dm_bufio_get_client);
1365
1366 static void drop_buffers(struct dm_bufio_client *c)
1367 {
1368         struct dm_buffer *b;
1369         int i;
1370
1371         BUG_ON(dm_bufio_in_request());
1372
1373         /*
1374          * An optimization so that the buffers are not written one-by-one.
1375          */
1376         dm_bufio_write_dirty_buffers_async(c);
1377
1378         dm_bufio_lock(c);
1379
1380         while ((b = __get_unclaimed_buffer(c)))
1381                 __free_buffer_wake(b);
1382
1383         for (i = 0; i < LIST_SIZE; i++)
1384                 list_for_each_entry(b, &c->lru[i], lru_list)
1385                         DMERR("leaked buffer %llx, hold count %u, list %d",
1386                               (unsigned long long)b->block, b->hold_count, i);
1387
1388         for (i = 0; i < LIST_SIZE; i++)
1389                 BUG_ON(!list_empty(&c->lru[i]));
1390
1391         dm_bufio_unlock(c);
1392 }
1393
1394 /*
1395  * Test if the buffer is unused and too old, and commit it.
1396  * At if noio is set, we must not do any I/O because we hold
1397  * dm_bufio_clients_lock and we would risk deadlock if the I/O gets rerouted to
1398  * different bufio client.
1399  */
1400 static int __cleanup_old_buffer(struct dm_buffer *b, gfp_t gfp,
1401                                 unsigned long max_jiffies)
1402 {
1403         if (jiffies - b->last_accessed < max_jiffies)
1404                 return 1;
1405
1406         if (!(gfp & __GFP_IO)) {
1407                 if (test_bit(B_READING, &b->state) ||
1408                     test_bit(B_WRITING, &b->state) ||
1409                     test_bit(B_DIRTY, &b->state))
1410                         return 1;
1411         }
1412
1413         if (b->hold_count)
1414                 return 1;
1415
1416         __make_buffer_clean(b);
1417         __unlink_buffer(b);
1418         __free_buffer_wake(b);
1419
1420         return 0;
1421 }
1422
1423 static void __scan(struct dm_bufio_client *c, unsigned long nr_to_scan,
1424                    struct shrink_control *sc)
1425 {
1426         int l;
1427         struct dm_buffer *b, *tmp;
1428
1429         for (l = 0; l < LIST_SIZE; l++) {
1430                 list_for_each_entry_safe_reverse(b, tmp, &c->lru[l], lru_list)
1431                         if (!__cleanup_old_buffer(b, sc->gfp_mask, 0) &&
1432                             !--nr_to_scan)
1433                                 return;
1434                 dm_bufio_cond_resched();
1435         }
1436 }
1437
1438 static int shrink(struct shrinker *shrinker, struct shrink_control *sc)
1439 {
1440         struct dm_bufio_client *c =
1441             container_of(shrinker, struct dm_bufio_client, shrinker);
1442         unsigned long r;
1443         unsigned long nr_to_scan = sc->nr_to_scan;
1444
1445         if (sc->gfp_mask & __GFP_IO)
1446                 dm_bufio_lock(c);
1447         else if (!dm_bufio_trylock(c))
1448                 return !nr_to_scan ? 0 : -1;
1449
1450         if (nr_to_scan)
1451                 __scan(c, nr_to_scan, sc);
1452
1453         r = c->n_buffers[LIST_CLEAN] + c->n_buffers[LIST_DIRTY];
1454         if (r > INT_MAX)
1455                 r = INT_MAX;
1456
1457         dm_bufio_unlock(c);
1458
1459         return r;
1460 }
1461
1462 /*
1463  * Create the buffering interface
1464  */
1465 struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsigned block_size,
1466                                                unsigned reserved_buffers, unsigned aux_size,
1467                                                void (*alloc_callback)(struct dm_buffer *),
1468                                                void (*write_callback)(struct dm_buffer *))
1469 {
1470         int r;
1471         struct dm_bufio_client *c;
1472         unsigned i;
1473
1474         BUG_ON(block_size < 1 << SECTOR_SHIFT ||
1475                (block_size & (block_size - 1)));
1476
1477         c = kmalloc(sizeof(*c), GFP_KERNEL);
1478         if (!c) {
1479                 r = -ENOMEM;
1480                 goto bad_client;
1481         }
1482         c->cache_hash = vmalloc(sizeof(struct hlist_head) << DM_BUFIO_HASH_BITS);
1483         if (!c->cache_hash) {
1484                 r = -ENOMEM;
1485                 goto bad_hash;
1486         }
1487
1488         c->bdev = bdev;
1489         c->block_size = block_size;
1490         c->sectors_per_block_bits = ffs(block_size) - 1 - SECTOR_SHIFT;
1491         c->pages_per_block_bits = (ffs(block_size) - 1 >= PAGE_SHIFT) ?
1492                                   ffs(block_size) - 1 - PAGE_SHIFT : 0;
1493         c->blocks_per_page_bits = (ffs(block_size) - 1 < PAGE_SHIFT ?
1494                                   PAGE_SHIFT - (ffs(block_size) - 1) : 0);
1495
1496         c->aux_size = aux_size;
1497         c->alloc_callback = alloc_callback;
1498         c->write_callback = write_callback;
1499
1500         for (i = 0; i < LIST_SIZE; i++) {
1501                 INIT_LIST_HEAD(&c->lru[i]);
1502                 c->n_buffers[i] = 0;
1503         }
1504
1505         for (i = 0; i < 1 << DM_BUFIO_HASH_BITS; i++)
1506                 INIT_HLIST_HEAD(&c->cache_hash[i]);
1507
1508         mutex_init(&c->lock);
1509         INIT_LIST_HEAD(&c->reserved_buffers);
1510         c->need_reserved_buffers = reserved_buffers;
1511
1512         init_waitqueue_head(&c->free_buffer_wait);
1513         c->async_write_error = 0;
1514
1515         c->dm_io = dm_io_client_create();
1516         if (IS_ERR(c->dm_io)) {
1517                 r = PTR_ERR(c->dm_io);
1518                 goto bad_dm_io;
1519         }
1520
1521         mutex_lock(&dm_bufio_clients_lock);
1522         if (c->blocks_per_page_bits) {
1523                 if (!DM_BUFIO_CACHE_NAME(c)) {
1524                         DM_BUFIO_CACHE_NAME(c) = kasprintf(GFP_KERNEL, "dm_bufio_cache-%u", c->block_size);
1525                         if (!DM_BUFIO_CACHE_NAME(c)) {
1526                                 r = -ENOMEM;
1527                                 mutex_unlock(&dm_bufio_clients_lock);
1528                                 goto bad_cache;
1529                         }
1530                 }
1531
1532                 if (!DM_BUFIO_CACHE(c)) {
1533                         DM_BUFIO_CACHE(c) = kmem_cache_create(DM_BUFIO_CACHE_NAME(c),
1534                                                               c->block_size,
1535                                                               c->block_size, 0, NULL);
1536                         if (!DM_BUFIO_CACHE(c)) {
1537                                 r = -ENOMEM;
1538                                 mutex_unlock(&dm_bufio_clients_lock);
1539                                 goto bad_cache;
1540                         }
1541                 }
1542         }
1543         mutex_unlock(&dm_bufio_clients_lock);
1544
1545         while (c->need_reserved_buffers) {
1546                 struct dm_buffer *b = alloc_buffer(c, GFP_KERNEL);
1547
1548                 if (!b) {
1549                         r = -ENOMEM;
1550                         goto bad_buffer;
1551                 }
1552                 __free_buffer_wake(b);
1553         }
1554
1555         mutex_lock(&dm_bufio_clients_lock);
1556         dm_bufio_client_count++;
1557         list_add(&c->client_list, &dm_bufio_all_clients);
1558         __cache_size_refresh();
1559         mutex_unlock(&dm_bufio_clients_lock);
1560
1561         c->shrinker.shrink = shrink;
1562         c->shrinker.seeks = 1;
1563         c->shrinker.batch = 0;
1564         register_shrinker(&c->shrinker);
1565
1566         return c;
1567
1568 bad_buffer:
1569 bad_cache:
1570         while (!list_empty(&c->reserved_buffers)) {
1571                 struct dm_buffer *b = list_entry(c->reserved_buffers.next,
1572                                                  struct dm_buffer, lru_list);
1573                 list_del(&b->lru_list);
1574                 free_buffer(b);
1575         }
1576         dm_io_client_destroy(c->dm_io);
1577 bad_dm_io:
1578         vfree(c->cache_hash);
1579 bad_hash:
1580         kfree(c);
1581 bad_client:
1582         return ERR_PTR(r);
1583 }
1584 EXPORT_SYMBOL_GPL(dm_bufio_client_create);
1585
1586 /*
1587  * Free the buffering interface.
1588  * It is required that there are no references on any buffers.
1589  */
1590 void dm_bufio_client_destroy(struct dm_bufio_client *c)
1591 {
1592         unsigned i;
1593
1594         drop_buffers(c);
1595
1596         unregister_shrinker(&c->shrinker);
1597
1598         mutex_lock(&dm_bufio_clients_lock);
1599
1600         list_del(&c->client_list);
1601         dm_bufio_client_count--;
1602         __cache_size_refresh();
1603
1604         mutex_unlock(&dm_bufio_clients_lock);
1605
1606         for (i = 0; i < 1 << DM_BUFIO_HASH_BITS; i++)
1607                 BUG_ON(!hlist_empty(&c->cache_hash[i]));
1608
1609         BUG_ON(c->need_reserved_buffers);
1610
1611         while (!list_empty(&c->reserved_buffers)) {
1612                 struct dm_buffer *b = list_entry(c->reserved_buffers.next,
1613                                                  struct dm_buffer, lru_list);
1614                 list_del(&b->lru_list);
1615                 free_buffer(b);
1616         }
1617
1618         for (i = 0; i < LIST_SIZE; i++)
1619                 if (c->n_buffers[i])
1620                         DMERR("leaked buffer count %d: %ld", i, c->n_buffers[i]);
1621
1622         for (i = 0; i < LIST_SIZE; i++)
1623                 BUG_ON(c->n_buffers[i]);
1624
1625         dm_io_client_destroy(c->dm_io);
1626         vfree(c->cache_hash);
1627         kfree(c);
1628 }
1629 EXPORT_SYMBOL_GPL(dm_bufio_client_destroy);
1630
1631 static void cleanup_old_buffers(void)
1632 {
1633         unsigned long max_age = ACCESS_ONCE(dm_bufio_max_age);
1634         struct dm_bufio_client *c;
1635
1636         if (max_age > ULONG_MAX / HZ)
1637                 max_age = ULONG_MAX / HZ;
1638
1639         mutex_lock(&dm_bufio_clients_lock);
1640         list_for_each_entry(c, &dm_bufio_all_clients, client_list) {
1641                 if (!dm_bufio_trylock(c))
1642                         continue;
1643
1644                 while (!list_empty(&c->lru[LIST_CLEAN])) {
1645                         struct dm_buffer *b;
1646                         b = list_entry(c->lru[LIST_CLEAN].prev,
1647                                        struct dm_buffer, lru_list);
1648                         if (__cleanup_old_buffer(b, 0, max_age * HZ))
1649                                 break;
1650                         dm_bufio_cond_resched();
1651                 }
1652
1653                 dm_bufio_unlock(c);
1654                 dm_bufio_cond_resched();
1655         }
1656         mutex_unlock(&dm_bufio_clients_lock);
1657 }
1658
1659 static struct workqueue_struct *dm_bufio_wq;
1660 static struct delayed_work dm_bufio_work;
1661
1662 static void work_fn(struct work_struct *w)
1663 {
1664         cleanup_old_buffers();
1665
1666         queue_delayed_work(dm_bufio_wq, &dm_bufio_work,
1667                            DM_BUFIO_WORK_TIMER_SECS * HZ);
1668 }
1669
1670 /*----------------------------------------------------------------
1671  * Module setup
1672  *--------------------------------------------------------------*/
1673
1674 /*
1675  * This is called only once for the whole dm_bufio module.
1676  * It initializes memory limit.
1677  */
1678 static int __init dm_bufio_init(void)
1679 {
1680         __u64 mem;
1681
1682         dm_bufio_allocated_kmem_cache = 0;
1683         dm_bufio_allocated_get_free_pages = 0;
1684         dm_bufio_allocated_vmalloc = 0;
1685         dm_bufio_current_allocated = 0;
1686
1687         memset(&dm_bufio_caches, 0, sizeof dm_bufio_caches);
1688         memset(&dm_bufio_cache_names, 0, sizeof dm_bufio_cache_names);
1689
1690         mem = (__u64)((totalram_pages - totalhigh_pages) *
1691                       DM_BUFIO_MEMORY_PERCENT / 100) << PAGE_SHIFT;
1692
1693         if (mem > ULONG_MAX)
1694                 mem = ULONG_MAX;
1695
1696 #ifdef CONFIG_MMU
1697         /*
1698          * Get the size of vmalloc space the same way as VMALLOC_TOTAL
1699          * in fs/proc/internal.h
1700          */
1701         if (mem > (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100)
1702                 mem = (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100;
1703 #endif
1704
1705         dm_bufio_default_cache_size = mem;
1706
1707         mutex_lock(&dm_bufio_clients_lock);
1708         __cache_size_refresh();
1709         mutex_unlock(&dm_bufio_clients_lock);
1710
1711         dm_bufio_wq = create_singlethread_workqueue("dm_bufio_cache");
1712         if (!dm_bufio_wq)
1713                 return -ENOMEM;
1714
1715         INIT_DELAYED_WORK(&dm_bufio_work, work_fn);
1716         queue_delayed_work(dm_bufio_wq, &dm_bufio_work,
1717                            DM_BUFIO_WORK_TIMER_SECS * HZ);
1718
1719         return 0;
1720 }
1721
1722 /*
1723  * This is called once when unloading the dm_bufio module.
1724  */
1725 static void __exit dm_bufio_exit(void)
1726 {
1727         int bug = 0;
1728         int i;
1729
1730         cancel_delayed_work_sync(&dm_bufio_work);
1731         destroy_workqueue(dm_bufio_wq);
1732
1733         for (i = 0; i < ARRAY_SIZE(dm_bufio_caches); i++) {
1734                 struct kmem_cache *kc = dm_bufio_caches[i];
1735
1736                 if (kc)
1737                         kmem_cache_destroy(kc);
1738         }
1739
1740         for (i = 0; i < ARRAY_SIZE(dm_bufio_cache_names); i++)
1741                 kfree(dm_bufio_cache_names[i]);
1742
1743         if (dm_bufio_client_count) {
1744                 DMCRIT("%s: dm_bufio_client_count leaked: %d",
1745                         __func__, dm_bufio_client_count);
1746                 bug = 1;
1747         }
1748
1749         if (dm_bufio_current_allocated) {
1750                 DMCRIT("%s: dm_bufio_current_allocated leaked: %lu",
1751                         __func__, dm_bufio_current_allocated);
1752                 bug = 1;
1753         }
1754
1755         if (dm_bufio_allocated_get_free_pages) {
1756                 DMCRIT("%s: dm_bufio_allocated_get_free_pages leaked: %lu",
1757                        __func__, dm_bufio_allocated_get_free_pages);
1758                 bug = 1;
1759         }
1760
1761         if (dm_bufio_allocated_vmalloc) {
1762                 DMCRIT("%s: dm_bufio_vmalloc leaked: %lu",
1763                        __func__, dm_bufio_allocated_vmalloc);
1764                 bug = 1;
1765         }
1766
1767         if (bug)
1768                 BUG();
1769 }
1770
1771 module_init(dm_bufio_init)
1772 module_exit(dm_bufio_exit)
1773
1774 module_param_named(max_cache_size_bytes, dm_bufio_cache_size, ulong, S_IRUGO | S_IWUSR);
1775 MODULE_PARM_DESC(max_cache_size_bytes, "Size of metadata cache");
1776
1777 module_param_named(max_age_seconds, dm_bufio_max_age, uint, S_IRUGO | S_IWUSR);
1778 MODULE_PARM_DESC(max_age_seconds, "Max age of a buffer in seconds");
1779
1780 module_param_named(peak_allocated_bytes, dm_bufio_peak_allocated, ulong, S_IRUGO | S_IWUSR);
1781 MODULE_PARM_DESC(peak_allocated_bytes, "Tracks the maximum allocated memory");
1782
1783 module_param_named(allocated_kmem_cache_bytes, dm_bufio_allocated_kmem_cache, ulong, S_IRUGO);
1784 MODULE_PARM_DESC(allocated_kmem_cache_bytes, "Memory allocated with kmem_cache_alloc");
1785
1786 module_param_named(allocated_get_free_pages_bytes, dm_bufio_allocated_get_free_pages, ulong, S_IRUGO);
1787 MODULE_PARM_DESC(allocated_get_free_pages_bytes, "Memory allocated with get_free_pages");
1788
1789 module_param_named(allocated_vmalloc_bytes, dm_bufio_allocated_vmalloc, ulong, S_IRUGO);
1790 MODULE_PARM_DESC(allocated_vmalloc_bytes, "Memory allocated with vmalloc");
1791
1792 module_param_named(current_allocated_bytes, dm_bufio_current_allocated, ulong, S_IRUGO);
1793 MODULE_PARM_DESC(current_allocated_bytes, "Memory currently used by the cache");
1794
1795 MODULE_AUTHOR("Mikulas Patocka <dm-devel@redhat.com>");
1796 MODULE_DESCRIPTION(DM_NAME " buffered I/O library");
1797 MODULE_LICENSE("GPL");