Merge tag 'fuse-update-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi...
[sfrench/cifs-2.6.git] / fs / libfs.c
1 /*
2  *      fs/libfs.c
3  *      Library for filesystems writers.
4  */
5
6 #include <linux/blkdev.h>
7 #include <linux/export.h>
8 #include <linux/pagemap.h>
9 #include <linux/slab.h>
10 #include <linux/cred.h>
11 #include <linux/mount.h>
12 #include <linux/vfs.h>
13 #include <linux/quotaops.h>
14 #include <linux/mutex.h>
15 #include <linux/namei.h>
16 #include <linux/exportfs.h>
17 #include <linux/writeback.h>
18 #include <linux/buffer_head.h> /* sync_mapping_buffers */
19
20 #include <linux/uaccess.h>
21
22 #include "internal.h"
23
24 int simple_getattr(const struct path *path, struct kstat *stat,
25                    u32 request_mask, unsigned int query_flags)
26 {
27         struct inode *inode = d_inode(path->dentry);
28         generic_fillattr(inode, stat);
29         stat->blocks = inode->i_mapping->nrpages << (PAGE_SHIFT - 9);
30         return 0;
31 }
32 EXPORT_SYMBOL(simple_getattr);
33
34 int simple_statfs(struct dentry *dentry, struct kstatfs *buf)
35 {
36         buf->f_type = dentry->d_sb->s_magic;
37         buf->f_bsize = PAGE_SIZE;
38         buf->f_namelen = NAME_MAX;
39         return 0;
40 }
41 EXPORT_SYMBOL(simple_statfs);
42
43 /*
44  * Retaining negative dentries for an in-memory filesystem just wastes
45  * memory and lookup time: arrange for them to be deleted immediately.
46  */
47 int always_delete_dentry(const struct dentry *dentry)
48 {
49         return 1;
50 }
51 EXPORT_SYMBOL(always_delete_dentry);
52
53 const struct dentry_operations simple_dentry_operations = {
54         .d_delete = always_delete_dentry,
55 };
56 EXPORT_SYMBOL(simple_dentry_operations);
57
58 /*
59  * Lookup the data. This is trivial - if the dentry didn't already
60  * exist, we know it is negative.  Set d_op to delete negative dentries.
61  */
62 struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
63 {
64         if (dentry->d_name.len > NAME_MAX)
65                 return ERR_PTR(-ENAMETOOLONG);
66         if (!dentry->d_sb->s_d_op)
67                 d_set_d_op(dentry, &simple_dentry_operations);
68         d_add(dentry, NULL);
69         return NULL;
70 }
71 EXPORT_SYMBOL(simple_lookup);
72
73 int dcache_dir_open(struct inode *inode, struct file *file)
74 {
75         file->private_data = d_alloc_cursor(file->f_path.dentry);
76
77         return file->private_data ? 0 : -ENOMEM;
78 }
79 EXPORT_SYMBOL(dcache_dir_open);
80
81 int dcache_dir_close(struct inode *inode, struct file *file)
82 {
83         dput(file->private_data);
84         return 0;
85 }
86 EXPORT_SYMBOL(dcache_dir_close);
87
88 /* parent is locked at least shared */
89 static struct dentry *next_positive(struct dentry *parent,
90                                     struct list_head *from,
91                                     int count)
92 {
93         unsigned *seq = &parent->d_inode->i_dir_seq, n;
94         struct dentry *res;
95         struct list_head *p;
96         bool skipped;
97         int i;
98
99 retry:
100         i = count;
101         skipped = false;
102         n = smp_load_acquire(seq) & ~1;
103         res = NULL;
104         rcu_read_lock();
105         for (p = from->next; p != &parent->d_subdirs; p = p->next) {
106                 struct dentry *d = list_entry(p, struct dentry, d_child);
107                 if (!simple_positive(d)) {
108                         skipped = true;
109                 } else if (!--i) {
110                         res = d;
111                         break;
112                 }
113         }
114         rcu_read_unlock();
115         if (skipped) {
116                 smp_rmb();
117                 if (unlikely(*seq != n))
118                         goto retry;
119         }
120         return res;
121 }
122
123 static void move_cursor(struct dentry *cursor, struct list_head *after)
124 {
125         struct dentry *parent = cursor->d_parent;
126         unsigned n, *seq = &parent->d_inode->i_dir_seq;
127         spin_lock(&parent->d_lock);
128         for (;;) {
129                 n = *seq;
130                 if (!(n & 1) && cmpxchg(seq, n, n + 1) == n)
131                         break;
132                 cpu_relax();
133         }
134         __list_del(cursor->d_child.prev, cursor->d_child.next);
135         if (after)
136                 list_add(&cursor->d_child, after);
137         else
138                 list_add_tail(&cursor->d_child, &parent->d_subdirs);
139         smp_store_release(seq, n + 2);
140         spin_unlock(&parent->d_lock);
141 }
142
143 loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
144 {
145         struct dentry *dentry = file->f_path.dentry;
146         switch (whence) {
147                 case 1:
148                         offset += file->f_pos;
149                         /* fall through */
150                 case 0:
151                         if (offset >= 0)
152                                 break;
153                         /* fall through */
154                 default:
155                         return -EINVAL;
156         }
157         if (offset != file->f_pos) {
158                 file->f_pos = offset;
159                 if (file->f_pos >= 2) {
160                         struct dentry *cursor = file->private_data;
161                         struct dentry *to;
162                         loff_t n = file->f_pos - 2;
163
164                         inode_lock_shared(dentry->d_inode);
165                         to = next_positive(dentry, &dentry->d_subdirs, n);
166                         move_cursor(cursor, to ? &to->d_child : NULL);
167                         inode_unlock_shared(dentry->d_inode);
168                 }
169         }
170         return offset;
171 }
172 EXPORT_SYMBOL(dcache_dir_lseek);
173
174 /* Relationship between i_mode and the DT_xxx types */
175 static inline unsigned char dt_type(struct inode *inode)
176 {
177         return (inode->i_mode >> 12) & 15;
178 }
179
180 /*
181  * Directory is locked and all positive dentries in it are safe, since
182  * for ramfs-type trees they can't go away without unlink() or rmdir(),
183  * both impossible due to the lock on directory.
184  */
185
186 int dcache_readdir(struct file *file, struct dir_context *ctx)
187 {
188         struct dentry *dentry = file->f_path.dentry;
189         struct dentry *cursor = file->private_data;
190         struct list_head *p = &cursor->d_child;
191         struct dentry *next;
192         bool moved = false;
193
194         if (!dir_emit_dots(file, ctx))
195                 return 0;
196
197         if (ctx->pos == 2)
198                 p = &dentry->d_subdirs;
199         while ((next = next_positive(dentry, p, 1)) != NULL) {
200                 if (!dir_emit(ctx, next->d_name.name, next->d_name.len,
201                               d_inode(next)->i_ino, dt_type(d_inode(next))))
202                         break;
203                 moved = true;
204                 p = &next->d_child;
205                 ctx->pos++;
206         }
207         if (moved)
208                 move_cursor(cursor, p);
209         return 0;
210 }
211 EXPORT_SYMBOL(dcache_readdir);
212
213 ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
214 {
215         return -EISDIR;
216 }
217 EXPORT_SYMBOL(generic_read_dir);
218
219 const struct file_operations simple_dir_operations = {
220         .open           = dcache_dir_open,
221         .release        = dcache_dir_close,
222         .llseek         = dcache_dir_lseek,
223         .read           = generic_read_dir,
224         .iterate_shared = dcache_readdir,
225         .fsync          = noop_fsync,
226 };
227 EXPORT_SYMBOL(simple_dir_operations);
228
229 const struct inode_operations simple_dir_inode_operations = {
230         .lookup         = simple_lookup,
231 };
232 EXPORT_SYMBOL(simple_dir_inode_operations);
233
234 static const struct super_operations simple_super_operations = {
235         .statfs         = simple_statfs,
236 };
237
238 /*
239  * Common helper for pseudo-filesystems (sockfs, pipefs, bdev - stuff that
240  * will never be mountable)
241  */
242 struct dentry *mount_pseudo_xattr(struct file_system_type *fs_type, char *name,
243         const struct super_operations *ops, const struct xattr_handler **xattr,
244         const struct dentry_operations *dops, unsigned long magic)
245 {
246         struct super_block *s;
247         struct dentry *dentry;
248         struct inode *root;
249         struct qstr d_name = QSTR_INIT(name, strlen(name));
250
251         s = sget_userns(fs_type, NULL, set_anon_super, SB_KERNMOUNT|SB_NOUSER,
252                         &init_user_ns, NULL);
253         if (IS_ERR(s))
254                 return ERR_CAST(s);
255
256         s->s_maxbytes = MAX_LFS_FILESIZE;
257         s->s_blocksize = PAGE_SIZE;
258         s->s_blocksize_bits = PAGE_SHIFT;
259         s->s_magic = magic;
260         s->s_op = ops ? ops : &simple_super_operations;
261         s->s_xattr = xattr;
262         s->s_time_gran = 1;
263         root = new_inode(s);
264         if (!root)
265                 goto Enomem;
266         /*
267          * since this is the first inode, make it number 1. New inodes created
268          * after this must take care not to collide with it (by passing
269          * max_reserved of 1 to iunique).
270          */
271         root->i_ino = 1;
272         root->i_mode = S_IFDIR | S_IRUSR | S_IWUSR;
273         root->i_atime = root->i_mtime = root->i_ctime = current_time(root);
274         dentry = __d_alloc(s, &d_name);
275         if (!dentry) {
276                 iput(root);
277                 goto Enomem;
278         }
279         d_instantiate(dentry, root);
280         s->s_root = dentry;
281         s->s_d_op = dops;
282         s->s_flags |= SB_ACTIVE;
283         return dget(s->s_root);
284
285 Enomem:
286         deactivate_locked_super(s);
287         return ERR_PTR(-ENOMEM);
288 }
289 EXPORT_SYMBOL(mount_pseudo_xattr);
290
291 int simple_open(struct inode *inode, struct file *file)
292 {
293         if (inode->i_private)
294                 file->private_data = inode->i_private;
295         return 0;
296 }
297 EXPORT_SYMBOL(simple_open);
298
299 int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
300 {
301         struct inode *inode = d_inode(old_dentry);
302
303         inode->i_ctime = dir->i_ctime = dir->i_mtime = current_time(inode);
304         inc_nlink(inode);
305         ihold(inode);
306         dget(dentry);
307         d_instantiate(dentry, inode);
308         return 0;
309 }
310 EXPORT_SYMBOL(simple_link);
311
312 int simple_empty(struct dentry *dentry)
313 {
314         struct dentry *child;
315         int ret = 0;
316
317         spin_lock(&dentry->d_lock);
318         list_for_each_entry(child, &dentry->d_subdirs, d_child) {
319                 spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
320                 if (simple_positive(child)) {
321                         spin_unlock(&child->d_lock);
322                         goto out;
323                 }
324                 spin_unlock(&child->d_lock);
325         }
326         ret = 1;
327 out:
328         spin_unlock(&dentry->d_lock);
329         return ret;
330 }
331 EXPORT_SYMBOL(simple_empty);
332
333 int simple_unlink(struct inode *dir, struct dentry *dentry)
334 {
335         struct inode *inode = d_inode(dentry);
336
337         inode->i_ctime = dir->i_ctime = dir->i_mtime = current_time(inode);
338         drop_nlink(inode);
339         dput(dentry);
340         return 0;
341 }
342 EXPORT_SYMBOL(simple_unlink);
343
344 int simple_rmdir(struct inode *dir, struct dentry *dentry)
345 {
346         if (!simple_empty(dentry))
347                 return -ENOTEMPTY;
348
349         drop_nlink(d_inode(dentry));
350         simple_unlink(dir, dentry);
351         drop_nlink(dir);
352         return 0;
353 }
354 EXPORT_SYMBOL(simple_rmdir);
355
356 int simple_rename(struct inode *old_dir, struct dentry *old_dentry,
357                   struct inode *new_dir, struct dentry *new_dentry,
358                   unsigned int flags)
359 {
360         struct inode *inode = d_inode(old_dentry);
361         int they_are_dirs = d_is_dir(old_dentry);
362
363         if (flags & ~RENAME_NOREPLACE)
364                 return -EINVAL;
365
366         if (!simple_empty(new_dentry))
367                 return -ENOTEMPTY;
368
369         if (d_really_is_positive(new_dentry)) {
370                 simple_unlink(new_dir, new_dentry);
371                 if (they_are_dirs) {
372                         drop_nlink(d_inode(new_dentry));
373                         drop_nlink(old_dir);
374                 }
375         } else if (they_are_dirs) {
376                 drop_nlink(old_dir);
377                 inc_nlink(new_dir);
378         }
379
380         old_dir->i_ctime = old_dir->i_mtime = new_dir->i_ctime =
381                 new_dir->i_mtime = inode->i_ctime = current_time(old_dir);
382
383         return 0;
384 }
385 EXPORT_SYMBOL(simple_rename);
386
387 /**
388  * simple_setattr - setattr for simple filesystem
389  * @dentry: dentry
390  * @iattr: iattr structure
391  *
392  * Returns 0 on success, -error on failure.
393  *
394  * simple_setattr is a simple ->setattr implementation without a proper
395  * implementation of size changes.
396  *
397  * It can either be used for in-memory filesystems or special files
398  * on simple regular filesystems.  Anything that needs to change on-disk
399  * or wire state on size changes needs its own setattr method.
400  */
401 int simple_setattr(struct dentry *dentry, struct iattr *iattr)
402 {
403         struct inode *inode = d_inode(dentry);
404         int error;
405
406         error = setattr_prepare(dentry, iattr);
407         if (error)
408                 return error;
409
410         if (iattr->ia_valid & ATTR_SIZE)
411                 truncate_setsize(inode, iattr->ia_size);
412         setattr_copy(inode, iattr);
413         mark_inode_dirty(inode);
414         return 0;
415 }
416 EXPORT_SYMBOL(simple_setattr);
417
418 int simple_readpage(struct file *file, struct page *page)
419 {
420         clear_highpage(page);
421         flush_dcache_page(page);
422         SetPageUptodate(page);
423         unlock_page(page);
424         return 0;
425 }
426 EXPORT_SYMBOL(simple_readpage);
427
428 int simple_write_begin(struct file *file, struct address_space *mapping,
429                         loff_t pos, unsigned len, unsigned flags,
430                         struct page **pagep, void **fsdata)
431 {
432         struct page *page;
433         pgoff_t index;
434
435         index = pos >> PAGE_SHIFT;
436
437         page = grab_cache_page_write_begin(mapping, index, flags);
438         if (!page)
439                 return -ENOMEM;
440
441         *pagep = page;
442
443         if (!PageUptodate(page) && (len != PAGE_SIZE)) {
444                 unsigned from = pos & (PAGE_SIZE - 1);
445
446                 zero_user_segments(page, 0, from, from + len, PAGE_SIZE);
447         }
448         return 0;
449 }
450 EXPORT_SYMBOL(simple_write_begin);
451
452 /**
453  * simple_write_end - .write_end helper for non-block-device FSes
454  * @available: See .write_end of address_space_operations
455  * @file:               "
456  * @mapping:            "
457  * @pos:                "
458  * @len:                "
459  * @copied:             "
460  * @page:               "
461  * @fsdata:             "
462  *
463  * simple_write_end does the minimum needed for updating a page after writing is
464  * done. It has the same API signature as the .write_end of
465  * address_space_operations vector. So it can just be set onto .write_end for
466  * FSes that don't need any other processing. i_mutex is assumed to be held.
467  * Block based filesystems should use generic_write_end().
468  * NOTE: Even though i_size might get updated by this function, mark_inode_dirty
469  * is not called, so a filesystem that actually does store data in .write_inode
470  * should extend on what's done here with a call to mark_inode_dirty() in the
471  * case that i_size has changed.
472  *
473  * Use *ONLY* with simple_readpage()
474  */
475 int simple_write_end(struct file *file, struct address_space *mapping,
476                         loff_t pos, unsigned len, unsigned copied,
477                         struct page *page, void *fsdata)
478 {
479         struct inode *inode = page->mapping->host;
480         loff_t last_pos = pos + copied;
481
482         /* zero the stale part of the page if we did a short copy */
483         if (!PageUptodate(page)) {
484                 if (copied < len) {
485                         unsigned from = pos & (PAGE_SIZE - 1);
486
487                         zero_user(page, from + copied, len - copied);
488                 }
489                 SetPageUptodate(page);
490         }
491         /*
492          * No need to use i_size_read() here, the i_size
493          * cannot change under us because we hold the i_mutex.
494          */
495         if (last_pos > inode->i_size)
496                 i_size_write(inode, last_pos);
497
498         set_page_dirty(page);
499         unlock_page(page);
500         put_page(page);
501
502         return copied;
503 }
504 EXPORT_SYMBOL(simple_write_end);
505
506 /*
507  * the inodes created here are not hashed. If you use iunique to generate
508  * unique inode values later for this filesystem, then you must take care
509  * to pass it an appropriate max_reserved value to avoid collisions.
510  */
511 int simple_fill_super(struct super_block *s, unsigned long magic,
512                       const struct tree_descr *files)
513 {
514         struct inode *inode;
515         struct dentry *root;
516         struct dentry *dentry;
517         int i;
518
519         s->s_blocksize = PAGE_SIZE;
520         s->s_blocksize_bits = PAGE_SHIFT;
521         s->s_magic = magic;
522         s->s_op = &simple_super_operations;
523         s->s_time_gran = 1;
524
525         inode = new_inode(s);
526         if (!inode)
527                 return -ENOMEM;
528         /*
529          * because the root inode is 1, the files array must not contain an
530          * entry at index 1
531          */
532         inode->i_ino = 1;
533         inode->i_mode = S_IFDIR | 0755;
534         inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
535         inode->i_op = &simple_dir_inode_operations;
536         inode->i_fop = &simple_dir_operations;
537         set_nlink(inode, 2);
538         root = d_make_root(inode);
539         if (!root)
540                 return -ENOMEM;
541         for (i = 0; !files->name || files->name[0]; i++, files++) {
542                 if (!files->name)
543                         continue;
544
545                 /* warn if it tries to conflict with the root inode */
546                 if (unlikely(i == 1))
547                         printk(KERN_WARNING "%s: %s passed in a files array"
548                                 "with an index of 1!\n", __func__,
549                                 s->s_type->name);
550
551                 dentry = d_alloc_name(root, files->name);
552                 if (!dentry)
553                         goto out;
554                 inode = new_inode(s);
555                 if (!inode) {
556                         dput(dentry);
557                         goto out;
558                 }
559                 inode->i_mode = S_IFREG | files->mode;
560                 inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
561                 inode->i_fop = files->ops;
562                 inode->i_ino = i;
563                 d_add(dentry, inode);
564         }
565         s->s_root = root;
566         return 0;
567 out:
568         d_genocide(root);
569         shrink_dcache_parent(root);
570         dput(root);
571         return -ENOMEM;
572 }
573 EXPORT_SYMBOL(simple_fill_super);
574
575 static DEFINE_SPINLOCK(pin_fs_lock);
576
577 int simple_pin_fs(struct file_system_type *type, struct vfsmount **mount, int *count)
578 {
579         struct vfsmount *mnt = NULL;
580         spin_lock(&pin_fs_lock);
581         if (unlikely(!*mount)) {
582                 spin_unlock(&pin_fs_lock);
583                 mnt = vfs_kern_mount(type, SB_KERNMOUNT, type->name, NULL);
584                 if (IS_ERR(mnt))
585                         return PTR_ERR(mnt);
586                 spin_lock(&pin_fs_lock);
587                 if (!*mount)
588                         *mount = mnt;
589         }
590         mntget(*mount);
591         ++*count;
592         spin_unlock(&pin_fs_lock);
593         mntput(mnt);
594         return 0;
595 }
596 EXPORT_SYMBOL(simple_pin_fs);
597
598 void simple_release_fs(struct vfsmount **mount, int *count)
599 {
600         struct vfsmount *mnt;
601         spin_lock(&pin_fs_lock);
602         mnt = *mount;
603         if (!--*count)
604                 *mount = NULL;
605         spin_unlock(&pin_fs_lock);
606         mntput(mnt);
607 }
608 EXPORT_SYMBOL(simple_release_fs);
609
610 /**
611  * simple_read_from_buffer - copy data from the buffer to user space
612  * @to: the user space buffer to read to
613  * @count: the maximum number of bytes to read
614  * @ppos: the current position in the buffer
615  * @from: the buffer to read from
616  * @available: the size of the buffer
617  *
618  * The simple_read_from_buffer() function reads up to @count bytes from the
619  * buffer @from at offset @ppos into the user space address starting at @to.
620  *
621  * On success, the number of bytes read is returned and the offset @ppos is
622  * advanced by this number, or negative value is returned on error.
623  **/
624 ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
625                                 const void *from, size_t available)
626 {
627         loff_t pos = *ppos;
628         size_t ret;
629
630         if (pos < 0)
631                 return -EINVAL;
632         if (pos >= available || !count)
633                 return 0;
634         if (count > available - pos)
635                 count = available - pos;
636         ret = copy_to_user(to, from + pos, count);
637         if (ret == count)
638                 return -EFAULT;
639         count -= ret;
640         *ppos = pos + count;
641         return count;
642 }
643 EXPORT_SYMBOL(simple_read_from_buffer);
644
645 /**
646  * simple_write_to_buffer - copy data from user space to the buffer
647  * @to: the buffer to write to
648  * @available: the size of the buffer
649  * @ppos: the current position in the buffer
650  * @from: the user space buffer to read from
651  * @count: the maximum number of bytes to read
652  *
653  * The simple_write_to_buffer() function reads up to @count bytes from the user
654  * space address starting at @from into the buffer @to at offset @ppos.
655  *
656  * On success, the number of bytes written is returned and the offset @ppos is
657  * advanced by this number, or negative value is returned on error.
658  **/
659 ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
660                 const void __user *from, size_t count)
661 {
662         loff_t pos = *ppos;
663         size_t res;
664
665         if (pos < 0)
666                 return -EINVAL;
667         if (pos >= available || !count)
668                 return 0;
669         if (count > available - pos)
670                 count = available - pos;
671         res = copy_from_user(to + pos, from, count);
672         if (res == count)
673                 return -EFAULT;
674         count -= res;
675         *ppos = pos + count;
676         return count;
677 }
678 EXPORT_SYMBOL(simple_write_to_buffer);
679
680 /**
681  * memory_read_from_buffer - copy data from the buffer
682  * @to: the kernel space buffer to read to
683  * @count: the maximum number of bytes to read
684  * @ppos: the current position in the buffer
685  * @from: the buffer to read from
686  * @available: the size of the buffer
687  *
688  * The memory_read_from_buffer() function reads up to @count bytes from the
689  * buffer @from at offset @ppos into the kernel space address starting at @to.
690  *
691  * On success, the number of bytes read is returned and the offset @ppos is
692  * advanced by this number, or negative value is returned on error.
693  **/
694 ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
695                                 const void *from, size_t available)
696 {
697         loff_t pos = *ppos;
698
699         if (pos < 0)
700                 return -EINVAL;
701         if (pos >= available)
702                 return 0;
703         if (count > available - pos)
704                 count = available - pos;
705         memcpy(to, from + pos, count);
706         *ppos = pos + count;
707
708         return count;
709 }
710 EXPORT_SYMBOL(memory_read_from_buffer);
711
712 /*
713  * Transaction based IO.
714  * The file expects a single write which triggers the transaction, and then
715  * possibly a read which collects the result - which is stored in a
716  * file-local buffer.
717  */
718
719 void simple_transaction_set(struct file *file, size_t n)
720 {
721         struct simple_transaction_argresp *ar = file->private_data;
722
723         BUG_ON(n > SIMPLE_TRANSACTION_LIMIT);
724
725         /*
726          * The barrier ensures that ar->size will really remain zero until
727          * ar->data is ready for reading.
728          */
729         smp_mb();
730         ar->size = n;
731 }
732 EXPORT_SYMBOL(simple_transaction_set);
733
734 char *simple_transaction_get(struct file *file, const char __user *buf, size_t size)
735 {
736         struct simple_transaction_argresp *ar;
737         static DEFINE_SPINLOCK(simple_transaction_lock);
738
739         if (size > SIMPLE_TRANSACTION_LIMIT - 1)
740                 return ERR_PTR(-EFBIG);
741
742         ar = (struct simple_transaction_argresp *)get_zeroed_page(GFP_KERNEL);
743         if (!ar)
744                 return ERR_PTR(-ENOMEM);
745
746         spin_lock(&simple_transaction_lock);
747
748         /* only one write allowed per open */
749         if (file->private_data) {
750                 spin_unlock(&simple_transaction_lock);
751                 free_page((unsigned long)ar);
752                 return ERR_PTR(-EBUSY);
753         }
754
755         file->private_data = ar;
756
757         spin_unlock(&simple_transaction_lock);
758
759         if (copy_from_user(ar->data, buf, size))
760                 return ERR_PTR(-EFAULT);
761
762         return ar->data;
763 }
764 EXPORT_SYMBOL(simple_transaction_get);
765
766 ssize_t simple_transaction_read(struct file *file, char __user *buf, size_t size, loff_t *pos)
767 {
768         struct simple_transaction_argresp *ar = file->private_data;
769
770         if (!ar)
771                 return 0;
772         return simple_read_from_buffer(buf, size, pos, ar->data, ar->size);
773 }
774 EXPORT_SYMBOL(simple_transaction_read);
775
776 int simple_transaction_release(struct inode *inode, struct file *file)
777 {
778         free_page((unsigned long)file->private_data);
779         return 0;
780 }
781 EXPORT_SYMBOL(simple_transaction_release);
782
783 /* Simple attribute files */
784
785 struct simple_attr {
786         int (*get)(void *, u64 *);
787         int (*set)(void *, u64);
788         char get_buf[24];       /* enough to store a u64 and "\n\0" */
789         char set_buf[24];
790         void *data;
791         const char *fmt;        /* format for read operation */
792         struct mutex mutex;     /* protects access to these buffers */
793 };
794
795 /* simple_attr_open is called by an actual attribute open file operation
796  * to set the attribute specific access operations. */
797 int simple_attr_open(struct inode *inode, struct file *file,
798                      int (*get)(void *, u64 *), int (*set)(void *, u64),
799                      const char *fmt)
800 {
801         struct simple_attr *attr;
802
803         attr = kmalloc(sizeof(*attr), GFP_KERNEL);
804         if (!attr)
805                 return -ENOMEM;
806
807         attr->get = get;
808         attr->set = set;
809         attr->data = inode->i_private;
810         attr->fmt = fmt;
811         mutex_init(&attr->mutex);
812
813         file->private_data = attr;
814
815         return nonseekable_open(inode, file);
816 }
817 EXPORT_SYMBOL_GPL(simple_attr_open);
818
819 int simple_attr_release(struct inode *inode, struct file *file)
820 {
821         kfree(file->private_data);
822         return 0;
823 }
824 EXPORT_SYMBOL_GPL(simple_attr_release); /* GPL-only?  This?  Really? */
825
826 /* read from the buffer that is filled with the get function */
827 ssize_t simple_attr_read(struct file *file, char __user *buf,
828                          size_t len, loff_t *ppos)
829 {
830         struct simple_attr *attr;
831         size_t size;
832         ssize_t ret;
833
834         attr = file->private_data;
835
836         if (!attr->get)
837                 return -EACCES;
838
839         ret = mutex_lock_interruptible(&attr->mutex);
840         if (ret)
841                 return ret;
842
843         if (*ppos) {            /* continued read */
844                 size = strlen(attr->get_buf);
845         } else {                /* first read */
846                 u64 val;
847                 ret = attr->get(attr->data, &val);
848                 if (ret)
849                         goto out;
850
851                 size = scnprintf(attr->get_buf, sizeof(attr->get_buf),
852                                  attr->fmt, (unsigned long long)val);
853         }
854
855         ret = simple_read_from_buffer(buf, len, ppos, attr->get_buf, size);
856 out:
857         mutex_unlock(&attr->mutex);
858         return ret;
859 }
860 EXPORT_SYMBOL_GPL(simple_attr_read);
861
862 /* interpret the buffer as a number to call the set function with */
863 ssize_t simple_attr_write(struct file *file, const char __user *buf,
864                           size_t len, loff_t *ppos)
865 {
866         struct simple_attr *attr;
867         u64 val;
868         size_t size;
869         ssize_t ret;
870
871         attr = file->private_data;
872         if (!attr->set)
873                 return -EACCES;
874
875         ret = mutex_lock_interruptible(&attr->mutex);
876         if (ret)
877                 return ret;
878
879         ret = -EFAULT;
880         size = min(sizeof(attr->set_buf) - 1, len);
881         if (copy_from_user(attr->set_buf, buf, size))
882                 goto out;
883
884         attr->set_buf[size] = '\0';
885         val = simple_strtoll(attr->set_buf, NULL, 0);
886         ret = attr->set(attr->data, val);
887         if (ret == 0)
888                 ret = len; /* on success, claim we got the whole input */
889 out:
890         mutex_unlock(&attr->mutex);
891         return ret;
892 }
893 EXPORT_SYMBOL_GPL(simple_attr_write);
894
895 /**
896  * generic_fh_to_dentry - generic helper for the fh_to_dentry export operation
897  * @sb:         filesystem to do the file handle conversion on
898  * @fid:        file handle to convert
899  * @fh_len:     length of the file handle in bytes
900  * @fh_type:    type of file handle
901  * @get_inode:  filesystem callback to retrieve inode
902  *
903  * This function decodes @fid as long as it has one of the well-known
904  * Linux filehandle types and calls @get_inode on it to retrieve the
905  * inode for the object specified in the file handle.
906  */
907 struct dentry *generic_fh_to_dentry(struct super_block *sb, struct fid *fid,
908                 int fh_len, int fh_type, struct inode *(*get_inode)
909                         (struct super_block *sb, u64 ino, u32 gen))
910 {
911         struct inode *inode = NULL;
912
913         if (fh_len < 2)
914                 return NULL;
915
916         switch (fh_type) {
917         case FILEID_INO32_GEN:
918         case FILEID_INO32_GEN_PARENT:
919                 inode = get_inode(sb, fid->i32.ino, fid->i32.gen);
920                 break;
921         }
922
923         return d_obtain_alias(inode);
924 }
925 EXPORT_SYMBOL_GPL(generic_fh_to_dentry);
926
927 /**
928  * generic_fh_to_parent - generic helper for the fh_to_parent export operation
929  * @sb:         filesystem to do the file handle conversion on
930  * @fid:        file handle to convert
931  * @fh_len:     length of the file handle in bytes
932  * @fh_type:    type of file handle
933  * @get_inode:  filesystem callback to retrieve inode
934  *
935  * This function decodes @fid as long as it has one of the well-known
936  * Linux filehandle types and calls @get_inode on it to retrieve the
937  * inode for the _parent_ object specified in the file handle if it
938  * is specified in the file handle, or NULL otherwise.
939  */
940 struct dentry *generic_fh_to_parent(struct super_block *sb, struct fid *fid,
941                 int fh_len, int fh_type, struct inode *(*get_inode)
942                         (struct super_block *sb, u64 ino, u32 gen))
943 {
944         struct inode *inode = NULL;
945
946         if (fh_len <= 2)
947                 return NULL;
948
949         switch (fh_type) {
950         case FILEID_INO32_GEN_PARENT:
951                 inode = get_inode(sb, fid->i32.parent_ino,
952                                   (fh_len > 3 ? fid->i32.parent_gen : 0));
953                 break;
954         }
955
956         return d_obtain_alias(inode);
957 }
958 EXPORT_SYMBOL_GPL(generic_fh_to_parent);
959
960 /**
961  * __generic_file_fsync - generic fsync implementation for simple filesystems
962  *
963  * @file:       file to synchronize
964  * @start:      start offset in bytes
965  * @end:        end offset in bytes (inclusive)
966  * @datasync:   only synchronize essential metadata if true
967  *
968  * This is a generic implementation of the fsync method for simple
969  * filesystems which track all non-inode metadata in the buffers list
970  * hanging off the address_space structure.
971  */
972 int __generic_file_fsync(struct file *file, loff_t start, loff_t end,
973                                  int datasync)
974 {
975         struct inode *inode = file->f_mapping->host;
976         int err;
977         int ret;
978
979         err = file_write_and_wait_range(file, start, end);
980         if (err)
981                 return err;
982
983         inode_lock(inode);
984         ret = sync_mapping_buffers(inode->i_mapping);
985         if (!(inode->i_state & I_DIRTY_ALL))
986                 goto out;
987         if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
988                 goto out;
989
990         err = sync_inode_metadata(inode, 1);
991         if (ret == 0)
992                 ret = err;
993
994 out:
995         inode_unlock(inode);
996         /* check and advance again to catch errors after syncing out buffers */
997         err = file_check_and_advance_wb_err(file);
998         if (ret == 0)
999                 ret = err;
1000         return ret;
1001 }
1002 EXPORT_SYMBOL(__generic_file_fsync);
1003
1004 /**
1005  * generic_file_fsync - generic fsync implementation for simple filesystems
1006  *                      with flush
1007  * @file:       file to synchronize
1008  * @start:      start offset in bytes
1009  * @end:        end offset in bytes (inclusive)
1010  * @datasync:   only synchronize essential metadata if true
1011  *
1012  */
1013
1014 int generic_file_fsync(struct file *file, loff_t start, loff_t end,
1015                        int datasync)
1016 {
1017         struct inode *inode = file->f_mapping->host;
1018         int err;
1019
1020         err = __generic_file_fsync(file, start, end, datasync);
1021         if (err)
1022                 return err;
1023         return blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
1024 }
1025 EXPORT_SYMBOL(generic_file_fsync);
1026
1027 /**
1028  * generic_check_addressable - Check addressability of file system
1029  * @blocksize_bits:     log of file system block size
1030  * @num_blocks:         number of blocks in file system
1031  *
1032  * Determine whether a file system with @num_blocks blocks (and a
1033  * block size of 2**@blocksize_bits) is addressable by the sector_t
1034  * and page cache of the system.  Return 0 if so and -EFBIG otherwise.
1035  */
1036 int generic_check_addressable(unsigned blocksize_bits, u64 num_blocks)
1037 {
1038         u64 last_fs_block = num_blocks - 1;
1039         u64 last_fs_page =
1040                 last_fs_block >> (PAGE_SHIFT - blocksize_bits);
1041
1042         if (unlikely(num_blocks == 0))
1043                 return 0;
1044
1045         if ((blocksize_bits < 9) || (blocksize_bits > PAGE_SHIFT))
1046                 return -EINVAL;
1047
1048         if ((last_fs_block > (sector_t)(~0ULL) >> (blocksize_bits - 9)) ||
1049             (last_fs_page > (pgoff_t)(~0ULL))) {
1050                 return -EFBIG;
1051         }
1052         return 0;
1053 }
1054 EXPORT_SYMBOL(generic_check_addressable);
1055
1056 /*
1057  * No-op implementation of ->fsync for in-memory filesystems.
1058  */
1059 int noop_fsync(struct file *file, loff_t start, loff_t end, int datasync)
1060 {
1061         return 0;
1062 }
1063 EXPORT_SYMBOL(noop_fsync);
1064
1065 int noop_set_page_dirty(struct page *page)
1066 {
1067         /*
1068          * Unlike __set_page_dirty_no_writeback that handles dirty page
1069          * tracking in the page object, dax does all dirty tracking in
1070          * the inode address_space in response to mkwrite faults. In the
1071          * dax case we only need to worry about potentially dirty CPU
1072          * caches, not dirty page cache pages to write back.
1073          *
1074          * This callback is defined to prevent fallback to
1075          * __set_page_dirty_buffers() in set_page_dirty().
1076          */
1077         return 0;
1078 }
1079 EXPORT_SYMBOL_GPL(noop_set_page_dirty);
1080
1081 void noop_invalidatepage(struct page *page, unsigned int offset,
1082                 unsigned int length)
1083 {
1084         /*
1085          * There is no page cache to invalidate in the dax case, however
1086          * we need this callback defined to prevent falling back to
1087          * block_invalidatepage() in do_invalidatepage().
1088          */
1089 }
1090 EXPORT_SYMBOL_GPL(noop_invalidatepage);
1091
1092 ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
1093 {
1094         /*
1095          * iomap based filesystems support direct I/O without need for
1096          * this callback. However, it still needs to be set in
1097          * inode->a_ops so that open/fcntl know that direct I/O is
1098          * generally supported.
1099          */
1100         return -EINVAL;
1101 }
1102 EXPORT_SYMBOL_GPL(noop_direct_IO);
1103
1104 /* Because kfree isn't assignment-compatible with void(void*) ;-/ */
1105 void kfree_link(void *p)
1106 {
1107         kfree(p);
1108 }
1109 EXPORT_SYMBOL(kfree_link);
1110
1111 /*
1112  * nop .set_page_dirty method so that people can use .page_mkwrite on
1113  * anon inodes.
1114  */
1115 static int anon_set_page_dirty(struct page *page)
1116 {
1117         return 0;
1118 };
1119
1120 /*
1121  * A single inode exists for all anon_inode files. Contrary to pipes,
1122  * anon_inode inodes have no associated per-instance data, so we need
1123  * only allocate one of them.
1124  */
1125 struct inode *alloc_anon_inode(struct super_block *s)
1126 {
1127         static const struct address_space_operations anon_aops = {
1128                 .set_page_dirty = anon_set_page_dirty,
1129         };
1130         struct inode *inode = new_inode_pseudo(s);
1131
1132         if (!inode)
1133                 return ERR_PTR(-ENOMEM);
1134
1135         inode->i_ino = get_next_ino();
1136         inode->i_mapping->a_ops = &anon_aops;
1137
1138         /*
1139          * Mark the inode dirty from the very beginning,
1140          * that way it will never be moved to the dirty
1141          * list because mark_inode_dirty() will think
1142          * that it already _is_ on the dirty list.
1143          */
1144         inode->i_state = I_DIRTY;
1145         inode->i_mode = S_IRUSR | S_IWUSR;
1146         inode->i_uid = current_fsuid();
1147         inode->i_gid = current_fsgid();
1148         inode->i_flags |= S_PRIVATE;
1149         inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
1150         return inode;
1151 }
1152 EXPORT_SYMBOL(alloc_anon_inode);
1153
1154 /**
1155  * simple_nosetlease - generic helper for prohibiting leases
1156  * @filp: file pointer
1157  * @arg: type of lease to obtain
1158  * @flp: new lease supplied for insertion
1159  * @priv: private data for lm_setup operation
1160  *
1161  * Generic helper for filesystems that do not wish to allow leases to be set.
1162  * All arguments are ignored and it just returns -EINVAL.
1163  */
1164 int
1165 simple_nosetlease(struct file *filp, long arg, struct file_lock **flp,
1166                   void **priv)
1167 {
1168         return -EINVAL;
1169 }
1170 EXPORT_SYMBOL(simple_nosetlease);
1171
1172 /**
1173  * simple_get_link - generic helper to get the target of "fast" symlinks
1174  * @dentry: not used here
1175  * @inode: the symlink inode
1176  * @done: not used here
1177  *
1178  * Generic helper for filesystems to use for symlink inodes where a pointer to
1179  * the symlink target is stored in ->i_link.  NOTE: this isn't normally called,
1180  * since as an optimization the path lookup code uses any non-NULL ->i_link
1181  * directly, without calling ->get_link().  But ->get_link() still must be set,
1182  * to mark the inode_operations as being for a symlink.
1183  *
1184  * Return: the symlink target
1185  */
1186 const char *simple_get_link(struct dentry *dentry, struct inode *inode,
1187                             struct delayed_call *done)
1188 {
1189         return inode->i_link;
1190 }
1191 EXPORT_SYMBOL(simple_get_link);
1192
1193 const struct inode_operations simple_symlink_inode_operations = {
1194         .get_link = simple_get_link,
1195 };
1196 EXPORT_SYMBOL(simple_symlink_inode_operations);
1197
1198 /*
1199  * Operations for a permanently empty directory.
1200  */
1201 static struct dentry *empty_dir_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
1202 {
1203         return ERR_PTR(-ENOENT);
1204 }
1205
1206 static int empty_dir_getattr(const struct path *path, struct kstat *stat,
1207                              u32 request_mask, unsigned int query_flags)
1208 {
1209         struct inode *inode = d_inode(path->dentry);
1210         generic_fillattr(inode, stat);
1211         return 0;
1212 }
1213
1214 static int empty_dir_setattr(struct dentry *dentry, struct iattr *attr)
1215 {
1216         return -EPERM;
1217 }
1218
1219 static ssize_t empty_dir_listxattr(struct dentry *dentry, char *list, size_t size)
1220 {
1221         return -EOPNOTSUPP;
1222 }
1223
1224 static const struct inode_operations empty_dir_inode_operations = {
1225         .lookup         = empty_dir_lookup,
1226         .permission     = generic_permission,
1227         .setattr        = empty_dir_setattr,
1228         .getattr        = empty_dir_getattr,
1229         .listxattr      = empty_dir_listxattr,
1230 };
1231
1232 static loff_t empty_dir_llseek(struct file *file, loff_t offset, int whence)
1233 {
1234         /* An empty directory has two entries . and .. at offsets 0 and 1 */
1235         return generic_file_llseek_size(file, offset, whence, 2, 2);
1236 }
1237
1238 static int empty_dir_readdir(struct file *file, struct dir_context *ctx)
1239 {
1240         dir_emit_dots(file, ctx);
1241         return 0;
1242 }
1243
1244 static const struct file_operations empty_dir_operations = {
1245         .llseek         = empty_dir_llseek,
1246         .read           = generic_read_dir,
1247         .iterate_shared = empty_dir_readdir,
1248         .fsync          = noop_fsync,
1249 };
1250
1251
1252 void make_empty_dir_inode(struct inode *inode)
1253 {
1254         set_nlink(inode, 2);
1255         inode->i_mode = S_IFDIR | S_IRUGO | S_IXUGO;
1256         inode->i_uid = GLOBAL_ROOT_UID;
1257         inode->i_gid = GLOBAL_ROOT_GID;
1258         inode->i_rdev = 0;
1259         inode->i_size = 0;
1260         inode->i_blkbits = PAGE_SHIFT;
1261         inode->i_blocks = 0;
1262
1263         inode->i_op = &empty_dir_inode_operations;
1264         inode->i_opflags &= ~IOP_XATTR;
1265         inode->i_fop = &empty_dir_operations;
1266 }
1267
1268 bool is_empty_dir_inode(struct inode *inode)
1269 {
1270         return (inode->i_fop == &empty_dir_operations) &&
1271                 (inode->i_op == &empty_dir_inode_operations);
1272 }