Merge tag 'mmc-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
[linux-2.6-block.git] / fs / xfs / xfs_inode.c
1 /*
2  * Copyright (c) 2000-2006 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18 #include <linux/log2.h>
19 #include <linux/iversion.h>
20
21 #include "xfs.h"
22 #include "xfs_fs.h"
23 #include "xfs_shared.h"
24 #include "xfs_format.h"
25 #include "xfs_log_format.h"
26 #include "xfs_trans_resv.h"
27 #include "xfs_sb.h"
28 #include "xfs_mount.h"
29 #include "xfs_defer.h"
30 #include "xfs_inode.h"
31 #include "xfs_da_format.h"
32 #include "xfs_da_btree.h"
33 #include "xfs_dir2.h"
34 #include "xfs_attr_sf.h"
35 #include "xfs_attr.h"
36 #include "xfs_trans_space.h"
37 #include "xfs_trans.h"
38 #include "xfs_buf_item.h"
39 #include "xfs_inode_item.h"
40 #include "xfs_ialloc.h"
41 #include "xfs_bmap.h"
42 #include "xfs_bmap_util.h"
43 #include "xfs_errortag.h"
44 #include "xfs_error.h"
45 #include "xfs_quota.h"
46 #include "xfs_filestream.h"
47 #include "xfs_cksum.h"
48 #include "xfs_trace.h"
49 #include "xfs_icache.h"
50 #include "xfs_symlink.h"
51 #include "xfs_trans_priv.h"
52 #include "xfs_log.h"
53 #include "xfs_bmap_btree.h"
54 #include "xfs_reflink.h"
55 #include "xfs_dir2_priv.h"
56
57 kmem_zone_t *xfs_inode_zone;
58
59 /*
60  * Used in xfs_itruncate_extents().  This is the maximum number of extents
61  * freed from a file in a single transaction.
62  */
63 #define XFS_ITRUNC_MAX_EXTENTS  2
64
65 STATIC int xfs_iflush_int(struct xfs_inode *, struct xfs_buf *);
66 STATIC int xfs_iunlink(struct xfs_trans *, struct xfs_inode *);
67 STATIC int xfs_iunlink_remove(struct xfs_trans *, struct xfs_inode *);
68
69 /*
70  * helper function to extract extent size hint from inode
71  */
72 xfs_extlen_t
73 xfs_get_extsz_hint(
74         struct xfs_inode        *ip)
75 {
76         if ((ip->i_d.di_flags & XFS_DIFLAG_EXTSIZE) && ip->i_d.di_extsize)
77                 return ip->i_d.di_extsize;
78         if (XFS_IS_REALTIME_INODE(ip))
79                 return ip->i_mount->m_sb.sb_rextsize;
80         return 0;
81 }
82
83 /*
84  * Helper function to extract CoW extent size hint from inode.
85  * Between the extent size hint and the CoW extent size hint, we
86  * return the greater of the two.  If the value is zero (automatic),
87  * use the default size.
88  */
89 xfs_extlen_t
90 xfs_get_cowextsz_hint(
91         struct xfs_inode        *ip)
92 {
93         xfs_extlen_t            a, b;
94
95         a = 0;
96         if (ip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE)
97                 a = ip->i_d.di_cowextsize;
98         b = xfs_get_extsz_hint(ip);
99
100         a = max(a, b);
101         if (a == 0)
102                 return XFS_DEFAULT_COWEXTSZ_HINT;
103         return a;
104 }
105
106 /*
107  * These two are wrapper routines around the xfs_ilock() routine used to
108  * centralize some grungy code.  They are used in places that wish to lock the
109  * inode solely for reading the extents.  The reason these places can't just
110  * call xfs_ilock(ip, XFS_ILOCK_SHARED) is that the inode lock also guards to
111  * bringing in of the extents from disk for a file in b-tree format.  If the
112  * inode is in b-tree format, then we need to lock the inode exclusively until
113  * the extents are read in.  Locking it exclusively all the time would limit
114  * our parallelism unnecessarily, though.  What we do instead is check to see
115  * if the extents have been read in yet, and only lock the inode exclusively
116  * if they have not.
117  *
118  * The functions return a value which should be given to the corresponding
119  * xfs_iunlock() call.
120  */
121 uint
122 xfs_ilock_data_map_shared(
123         struct xfs_inode        *ip)
124 {
125         uint                    lock_mode = XFS_ILOCK_SHARED;
126
127         if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE &&
128             (ip->i_df.if_flags & XFS_IFEXTENTS) == 0)
129                 lock_mode = XFS_ILOCK_EXCL;
130         xfs_ilock(ip, lock_mode);
131         return lock_mode;
132 }
133
134 uint
135 xfs_ilock_attr_map_shared(
136         struct xfs_inode        *ip)
137 {
138         uint                    lock_mode = XFS_ILOCK_SHARED;
139
140         if (ip->i_d.di_aformat == XFS_DINODE_FMT_BTREE &&
141             (ip->i_afp->if_flags & XFS_IFEXTENTS) == 0)
142                 lock_mode = XFS_ILOCK_EXCL;
143         xfs_ilock(ip, lock_mode);
144         return lock_mode;
145 }
146
147 /*
148  * In addition to i_rwsem in the VFS inode, the xfs inode contains 2
149  * multi-reader locks: i_mmap_lock and the i_lock.  This routine allows
150  * various combinations of the locks to be obtained.
151  *
152  * The 3 locks should always be ordered so that the IO lock is obtained first,
153  * the mmap lock second and the ilock last in order to prevent deadlock.
154  *
155  * Basic locking order:
156  *
157  * i_rwsem -> i_mmap_lock -> page_lock -> i_ilock
158  *
159  * mmap_sem locking order:
160  *
161  * i_rwsem -> page lock -> mmap_sem
162  * mmap_sem -> i_mmap_lock -> page_lock
163  *
164  * The difference in mmap_sem locking order mean that we cannot hold the
165  * i_mmap_lock over syscall based read(2)/write(2) based IO. These IO paths can
166  * fault in pages during copy in/out (for buffered IO) or require the mmap_sem
167  * in get_user_pages() to map the user pages into the kernel address space for
168  * direct IO. Similarly the i_rwsem cannot be taken inside a page fault because
169  * page faults already hold the mmap_sem.
170  *
171  * Hence to serialise fully against both syscall and mmap based IO, we need to
172  * take both the i_rwsem and the i_mmap_lock. These locks should *only* be both
173  * taken in places where we need to invalidate the page cache in a race
174  * free manner (e.g. truncate, hole punch and other extent manipulation
175  * functions).
176  */
177 void
178 xfs_ilock(
179         xfs_inode_t             *ip,
180         uint                    lock_flags)
181 {
182         trace_xfs_ilock(ip, lock_flags, _RET_IP_);
183
184         /*
185          * You can't set both SHARED and EXCL for the same lock,
186          * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
187          * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
188          */
189         ASSERT((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL)) !=
190                (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL));
191         ASSERT((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL)) !=
192                (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL));
193         ASSERT((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL)) !=
194                (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL));
195         ASSERT((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK)) == 0);
196
197         if (lock_flags & XFS_IOLOCK_EXCL) {
198                 down_write_nested(&VFS_I(ip)->i_rwsem,
199                                   XFS_IOLOCK_DEP(lock_flags));
200         } else if (lock_flags & XFS_IOLOCK_SHARED) {
201                 down_read_nested(&VFS_I(ip)->i_rwsem,
202                                  XFS_IOLOCK_DEP(lock_flags));
203         }
204
205         if (lock_flags & XFS_MMAPLOCK_EXCL)
206                 mrupdate_nested(&ip->i_mmaplock, XFS_MMAPLOCK_DEP(lock_flags));
207         else if (lock_flags & XFS_MMAPLOCK_SHARED)
208                 mraccess_nested(&ip->i_mmaplock, XFS_MMAPLOCK_DEP(lock_flags));
209
210         if (lock_flags & XFS_ILOCK_EXCL)
211                 mrupdate_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags));
212         else if (lock_flags & XFS_ILOCK_SHARED)
213                 mraccess_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags));
214 }
215
216 /*
217  * This is just like xfs_ilock(), except that the caller
218  * is guaranteed not to sleep.  It returns 1 if it gets
219  * the requested locks and 0 otherwise.  If the IO lock is
220  * obtained but the inode lock cannot be, then the IO lock
221  * is dropped before returning.
222  *
223  * ip -- the inode being locked
224  * lock_flags -- this parameter indicates the inode's locks to be
225  *       to be locked.  See the comment for xfs_ilock() for a list
226  *       of valid values.
227  */
228 int
229 xfs_ilock_nowait(
230         xfs_inode_t             *ip,
231         uint                    lock_flags)
232 {
233         trace_xfs_ilock_nowait(ip, lock_flags, _RET_IP_);
234
235         /*
236          * You can't set both SHARED and EXCL for the same lock,
237          * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
238          * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
239          */
240         ASSERT((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL)) !=
241                (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL));
242         ASSERT((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL)) !=
243                (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL));
244         ASSERT((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL)) !=
245                (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL));
246         ASSERT((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK)) == 0);
247
248         if (lock_flags & XFS_IOLOCK_EXCL) {
249                 if (!down_write_trylock(&VFS_I(ip)->i_rwsem))
250                         goto out;
251         } else if (lock_flags & XFS_IOLOCK_SHARED) {
252                 if (!down_read_trylock(&VFS_I(ip)->i_rwsem))
253                         goto out;
254         }
255
256         if (lock_flags & XFS_MMAPLOCK_EXCL) {
257                 if (!mrtryupdate(&ip->i_mmaplock))
258                         goto out_undo_iolock;
259         } else if (lock_flags & XFS_MMAPLOCK_SHARED) {
260                 if (!mrtryaccess(&ip->i_mmaplock))
261                         goto out_undo_iolock;
262         }
263
264         if (lock_flags & XFS_ILOCK_EXCL) {
265                 if (!mrtryupdate(&ip->i_lock))
266                         goto out_undo_mmaplock;
267         } else if (lock_flags & XFS_ILOCK_SHARED) {
268                 if (!mrtryaccess(&ip->i_lock))
269                         goto out_undo_mmaplock;
270         }
271         return 1;
272
273 out_undo_mmaplock:
274         if (lock_flags & XFS_MMAPLOCK_EXCL)
275                 mrunlock_excl(&ip->i_mmaplock);
276         else if (lock_flags & XFS_MMAPLOCK_SHARED)
277                 mrunlock_shared(&ip->i_mmaplock);
278 out_undo_iolock:
279         if (lock_flags & XFS_IOLOCK_EXCL)
280                 up_write(&VFS_I(ip)->i_rwsem);
281         else if (lock_flags & XFS_IOLOCK_SHARED)
282                 up_read(&VFS_I(ip)->i_rwsem);
283 out:
284         return 0;
285 }
286
287 /*
288  * xfs_iunlock() is used to drop the inode locks acquired with
289  * xfs_ilock() and xfs_ilock_nowait().  The caller must pass
290  * in the flags given to xfs_ilock() or xfs_ilock_nowait() so
291  * that we know which locks to drop.
292  *
293  * ip -- the inode being unlocked
294  * lock_flags -- this parameter indicates the inode's locks to be
295  *       to be unlocked.  See the comment for xfs_ilock() for a list
296  *       of valid values for this parameter.
297  *
298  */
299 void
300 xfs_iunlock(
301         xfs_inode_t             *ip,
302         uint                    lock_flags)
303 {
304         /*
305          * You can't set both SHARED and EXCL for the same lock,
306          * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
307          * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
308          */
309         ASSERT((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL)) !=
310                (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL));
311         ASSERT((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL)) !=
312                (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL));
313         ASSERT((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL)) !=
314                (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL));
315         ASSERT((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK)) == 0);
316         ASSERT(lock_flags != 0);
317
318         if (lock_flags & XFS_IOLOCK_EXCL)
319                 up_write(&VFS_I(ip)->i_rwsem);
320         else if (lock_flags & XFS_IOLOCK_SHARED)
321                 up_read(&VFS_I(ip)->i_rwsem);
322
323         if (lock_flags & XFS_MMAPLOCK_EXCL)
324                 mrunlock_excl(&ip->i_mmaplock);
325         else if (lock_flags & XFS_MMAPLOCK_SHARED)
326                 mrunlock_shared(&ip->i_mmaplock);
327
328         if (lock_flags & XFS_ILOCK_EXCL)
329                 mrunlock_excl(&ip->i_lock);
330         else if (lock_flags & XFS_ILOCK_SHARED)
331                 mrunlock_shared(&ip->i_lock);
332
333         trace_xfs_iunlock(ip, lock_flags, _RET_IP_);
334 }
335
336 /*
337  * give up write locks.  the i/o lock cannot be held nested
338  * if it is being demoted.
339  */
340 void
341 xfs_ilock_demote(
342         xfs_inode_t             *ip,
343         uint                    lock_flags)
344 {
345         ASSERT(lock_flags & (XFS_IOLOCK_EXCL|XFS_MMAPLOCK_EXCL|XFS_ILOCK_EXCL));
346         ASSERT((lock_flags &
347                 ~(XFS_IOLOCK_EXCL|XFS_MMAPLOCK_EXCL|XFS_ILOCK_EXCL)) == 0);
348
349         if (lock_flags & XFS_ILOCK_EXCL)
350                 mrdemote(&ip->i_lock);
351         if (lock_flags & XFS_MMAPLOCK_EXCL)
352                 mrdemote(&ip->i_mmaplock);
353         if (lock_flags & XFS_IOLOCK_EXCL)
354                 downgrade_write(&VFS_I(ip)->i_rwsem);
355
356         trace_xfs_ilock_demote(ip, lock_flags, _RET_IP_);
357 }
358
359 #if defined(DEBUG) || defined(XFS_WARN)
360 int
361 xfs_isilocked(
362         xfs_inode_t             *ip,
363         uint                    lock_flags)
364 {
365         if (lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) {
366                 if (!(lock_flags & XFS_ILOCK_SHARED))
367                         return !!ip->i_lock.mr_writer;
368                 return rwsem_is_locked(&ip->i_lock.mr_lock);
369         }
370
371         if (lock_flags & (XFS_MMAPLOCK_EXCL|XFS_MMAPLOCK_SHARED)) {
372                 if (!(lock_flags & XFS_MMAPLOCK_SHARED))
373                         return !!ip->i_mmaplock.mr_writer;
374                 return rwsem_is_locked(&ip->i_mmaplock.mr_lock);
375         }
376
377         if (lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) {
378                 if (!(lock_flags & XFS_IOLOCK_SHARED))
379                         return !debug_locks ||
380                                 lockdep_is_held_type(&VFS_I(ip)->i_rwsem, 0);
381                 return rwsem_is_locked(&VFS_I(ip)->i_rwsem);
382         }
383
384         ASSERT(0);
385         return 0;
386 }
387 #endif
388
389 /*
390  * xfs_lockdep_subclass_ok() is only used in an ASSERT, so is only called when
391  * DEBUG or XFS_WARN is set. And MAX_LOCKDEP_SUBCLASSES is then only defined
392  * when CONFIG_LOCKDEP is set. Hence the complex define below to avoid build
393  * errors and warnings.
394  */
395 #if (defined(DEBUG) || defined(XFS_WARN)) && defined(CONFIG_LOCKDEP)
396 static bool
397 xfs_lockdep_subclass_ok(
398         int subclass)
399 {
400         return subclass < MAX_LOCKDEP_SUBCLASSES;
401 }
402 #else
403 #define xfs_lockdep_subclass_ok(subclass)       (true)
404 #endif
405
406 /*
407  * Bump the subclass so xfs_lock_inodes() acquires each lock with a different
408  * value. This can be called for any type of inode lock combination, including
409  * parent locking. Care must be taken to ensure we don't overrun the subclass
410  * storage fields in the class mask we build.
411  */
412 static inline int
413 xfs_lock_inumorder(int lock_mode, int subclass)
414 {
415         int     class = 0;
416
417         ASSERT(!(lock_mode & (XFS_ILOCK_PARENT | XFS_ILOCK_RTBITMAP |
418                               XFS_ILOCK_RTSUM)));
419         ASSERT(xfs_lockdep_subclass_ok(subclass));
420
421         if (lock_mode & (XFS_IOLOCK_SHARED|XFS_IOLOCK_EXCL)) {
422                 ASSERT(subclass <= XFS_IOLOCK_MAX_SUBCLASS);
423                 class += subclass << XFS_IOLOCK_SHIFT;
424         }
425
426         if (lock_mode & (XFS_MMAPLOCK_SHARED|XFS_MMAPLOCK_EXCL)) {
427                 ASSERT(subclass <= XFS_MMAPLOCK_MAX_SUBCLASS);
428                 class += subclass << XFS_MMAPLOCK_SHIFT;
429         }
430
431         if (lock_mode & (XFS_ILOCK_SHARED|XFS_ILOCK_EXCL)) {
432                 ASSERT(subclass <= XFS_ILOCK_MAX_SUBCLASS);
433                 class += subclass << XFS_ILOCK_SHIFT;
434         }
435
436         return (lock_mode & ~XFS_LOCK_SUBCLASS_MASK) | class;
437 }
438
439 /*
440  * The following routine will lock n inodes in exclusive mode.  We assume the
441  * caller calls us with the inodes in i_ino order.
442  *
443  * We need to detect deadlock where an inode that we lock is in the AIL and we
444  * start waiting for another inode that is locked by a thread in a long running
445  * transaction (such as truncate). This can result in deadlock since the long
446  * running trans might need to wait for the inode we just locked in order to
447  * push the tail and free space in the log.
448  *
449  * xfs_lock_inodes() can only be used to lock one type of lock at a time -
450  * the iolock, the mmaplock or the ilock, but not more than one at a time. If we
451  * lock more than one at a time, lockdep will report false positives saying we
452  * have violated locking orders.
453  */
454 static void
455 xfs_lock_inodes(
456         xfs_inode_t     **ips,
457         int             inodes,
458         uint            lock_mode)
459 {
460         int             attempts = 0, i, j, try_lock;
461         xfs_log_item_t  *lp;
462
463         /*
464          * Currently supports between 2 and 5 inodes with exclusive locking.  We
465          * support an arbitrary depth of locking here, but absolute limits on
466          * inodes depend on the the type of locking and the limits placed by
467          * lockdep annotations in xfs_lock_inumorder.  These are all checked by
468          * the asserts.
469          */
470         ASSERT(ips && inodes >= 2 && inodes <= 5);
471         ASSERT(lock_mode & (XFS_IOLOCK_EXCL | XFS_MMAPLOCK_EXCL |
472                             XFS_ILOCK_EXCL));
473         ASSERT(!(lock_mode & (XFS_IOLOCK_SHARED | XFS_MMAPLOCK_SHARED |
474                               XFS_ILOCK_SHARED)));
475         ASSERT(!(lock_mode & XFS_MMAPLOCK_EXCL) ||
476                 inodes <= XFS_MMAPLOCK_MAX_SUBCLASS + 1);
477         ASSERT(!(lock_mode & XFS_ILOCK_EXCL) ||
478                 inodes <= XFS_ILOCK_MAX_SUBCLASS + 1);
479
480         if (lock_mode & XFS_IOLOCK_EXCL) {
481                 ASSERT(!(lock_mode & (XFS_MMAPLOCK_EXCL | XFS_ILOCK_EXCL)));
482         } else if (lock_mode & XFS_MMAPLOCK_EXCL)
483                 ASSERT(!(lock_mode & XFS_ILOCK_EXCL));
484
485         try_lock = 0;
486         i = 0;
487 again:
488         for (; i < inodes; i++) {
489                 ASSERT(ips[i]);
490
491                 if (i && (ips[i] == ips[i - 1]))        /* Already locked */
492                         continue;
493
494                 /*
495                  * If try_lock is not set yet, make sure all locked inodes are
496                  * not in the AIL.  If any are, set try_lock to be used later.
497                  */
498                 if (!try_lock) {
499                         for (j = (i - 1); j >= 0 && !try_lock; j--) {
500                                 lp = (xfs_log_item_t *)ips[j]->i_itemp;
501                                 if (lp && (lp->li_flags & XFS_LI_IN_AIL))
502                                         try_lock++;
503                         }
504                 }
505
506                 /*
507                  * If any of the previous locks we have locked is in the AIL,
508                  * we must TRY to get the second and subsequent locks. If
509                  * we can't get any, we must release all we have
510                  * and try again.
511                  */
512                 if (!try_lock) {
513                         xfs_ilock(ips[i], xfs_lock_inumorder(lock_mode, i));
514                         continue;
515                 }
516
517                 /* try_lock means we have an inode locked that is in the AIL. */
518                 ASSERT(i != 0);
519                 if (xfs_ilock_nowait(ips[i], xfs_lock_inumorder(lock_mode, i)))
520                         continue;
521
522                 /*
523                  * Unlock all previous guys and try again.  xfs_iunlock will try
524                  * to push the tail if the inode is in the AIL.
525                  */
526                 attempts++;
527                 for (j = i - 1; j >= 0; j--) {
528                         /*
529                          * Check to see if we've already unlocked this one.  Not
530                          * the first one going back, and the inode ptr is the
531                          * same.
532                          */
533                         if (j != (i - 1) && ips[j] == ips[j + 1])
534                                 continue;
535
536                         xfs_iunlock(ips[j], lock_mode);
537                 }
538
539                 if ((attempts % 5) == 0) {
540                         delay(1); /* Don't just spin the CPU */
541                 }
542                 i = 0;
543                 try_lock = 0;
544                 goto again;
545         }
546 }
547
548 /*
549  * xfs_lock_two_inodes() can only be used to lock one type of lock at a time -
550  * the mmaplock or the ilock, but not more than one type at a time. If we lock
551  * more than one at a time, lockdep will report false positives saying we have
552  * violated locking orders.  The iolock must be double-locked separately since
553  * we use i_rwsem for that.  We now support taking one lock EXCL and the other
554  * SHARED.
555  */
556 void
557 xfs_lock_two_inodes(
558         struct xfs_inode        *ip0,
559         uint                    ip0_mode,
560         struct xfs_inode        *ip1,
561         uint                    ip1_mode)
562 {
563         struct xfs_inode        *temp;
564         uint                    mode_temp;
565         int                     attempts = 0;
566         xfs_log_item_t          *lp;
567
568         ASSERT(hweight32(ip0_mode) == 1);
569         ASSERT(hweight32(ip1_mode) == 1);
570         ASSERT(!(ip0_mode & (XFS_IOLOCK_SHARED|XFS_IOLOCK_EXCL)));
571         ASSERT(!(ip1_mode & (XFS_IOLOCK_SHARED|XFS_IOLOCK_EXCL)));
572         ASSERT(!(ip0_mode & (XFS_MMAPLOCK_SHARED|XFS_MMAPLOCK_EXCL)) ||
573                !(ip0_mode & (XFS_ILOCK_SHARED|XFS_ILOCK_EXCL)));
574         ASSERT(!(ip1_mode & (XFS_MMAPLOCK_SHARED|XFS_MMAPLOCK_EXCL)) ||
575                !(ip1_mode & (XFS_ILOCK_SHARED|XFS_ILOCK_EXCL)));
576         ASSERT(!(ip1_mode & (XFS_MMAPLOCK_SHARED|XFS_MMAPLOCK_EXCL)) ||
577                !(ip0_mode & (XFS_ILOCK_SHARED|XFS_ILOCK_EXCL)));
578         ASSERT(!(ip0_mode & (XFS_MMAPLOCK_SHARED|XFS_MMAPLOCK_EXCL)) ||
579                !(ip1_mode & (XFS_ILOCK_SHARED|XFS_ILOCK_EXCL)));
580
581         ASSERT(ip0->i_ino != ip1->i_ino);
582
583         if (ip0->i_ino > ip1->i_ino) {
584                 temp = ip0;
585                 ip0 = ip1;
586                 ip1 = temp;
587                 mode_temp = ip0_mode;
588                 ip0_mode = ip1_mode;
589                 ip1_mode = mode_temp;
590         }
591
592  again:
593         xfs_ilock(ip0, xfs_lock_inumorder(ip0_mode, 0));
594
595         /*
596          * If the first lock we have locked is in the AIL, we must TRY to get
597          * the second lock. If we can't get it, we must release the first one
598          * and try again.
599          */
600         lp = (xfs_log_item_t *)ip0->i_itemp;
601         if (lp && (lp->li_flags & XFS_LI_IN_AIL)) {
602                 if (!xfs_ilock_nowait(ip1, xfs_lock_inumorder(ip1_mode, 1))) {
603                         xfs_iunlock(ip0, ip0_mode);
604                         if ((++attempts % 5) == 0)
605                                 delay(1); /* Don't just spin the CPU */
606                         goto again;
607                 }
608         } else {
609                 xfs_ilock(ip1, xfs_lock_inumorder(ip1_mode, 1));
610         }
611 }
612
613 void
614 __xfs_iflock(
615         struct xfs_inode        *ip)
616 {
617         wait_queue_head_t *wq = bit_waitqueue(&ip->i_flags, __XFS_IFLOCK_BIT);
618         DEFINE_WAIT_BIT(wait, &ip->i_flags, __XFS_IFLOCK_BIT);
619
620         do {
621                 prepare_to_wait_exclusive(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE);
622                 if (xfs_isiflocked(ip))
623                         io_schedule();
624         } while (!xfs_iflock_nowait(ip));
625
626         finish_wait(wq, &wait.wq_entry);
627 }
628
629 STATIC uint
630 _xfs_dic2xflags(
631         uint16_t                di_flags,
632         uint64_t                di_flags2,
633         bool                    has_attr)
634 {
635         uint                    flags = 0;
636
637         if (di_flags & XFS_DIFLAG_ANY) {
638                 if (di_flags & XFS_DIFLAG_REALTIME)
639                         flags |= FS_XFLAG_REALTIME;
640                 if (di_flags & XFS_DIFLAG_PREALLOC)
641                         flags |= FS_XFLAG_PREALLOC;
642                 if (di_flags & XFS_DIFLAG_IMMUTABLE)
643                         flags |= FS_XFLAG_IMMUTABLE;
644                 if (di_flags & XFS_DIFLAG_APPEND)
645                         flags |= FS_XFLAG_APPEND;
646                 if (di_flags & XFS_DIFLAG_SYNC)
647                         flags |= FS_XFLAG_SYNC;
648                 if (di_flags & XFS_DIFLAG_NOATIME)
649                         flags |= FS_XFLAG_NOATIME;
650                 if (di_flags & XFS_DIFLAG_NODUMP)
651                         flags |= FS_XFLAG_NODUMP;
652                 if (di_flags & XFS_DIFLAG_RTINHERIT)
653                         flags |= FS_XFLAG_RTINHERIT;
654                 if (di_flags & XFS_DIFLAG_PROJINHERIT)
655                         flags |= FS_XFLAG_PROJINHERIT;
656                 if (di_flags & XFS_DIFLAG_NOSYMLINKS)
657                         flags |= FS_XFLAG_NOSYMLINKS;
658                 if (di_flags & XFS_DIFLAG_EXTSIZE)
659                         flags |= FS_XFLAG_EXTSIZE;
660                 if (di_flags & XFS_DIFLAG_EXTSZINHERIT)
661                         flags |= FS_XFLAG_EXTSZINHERIT;
662                 if (di_flags & XFS_DIFLAG_NODEFRAG)
663                         flags |= FS_XFLAG_NODEFRAG;
664                 if (di_flags & XFS_DIFLAG_FILESTREAM)
665                         flags |= FS_XFLAG_FILESTREAM;
666         }
667
668         if (di_flags2 & XFS_DIFLAG2_ANY) {
669                 if (di_flags2 & XFS_DIFLAG2_DAX)
670                         flags |= FS_XFLAG_DAX;
671                 if (di_flags2 & XFS_DIFLAG2_COWEXTSIZE)
672                         flags |= FS_XFLAG_COWEXTSIZE;
673         }
674
675         if (has_attr)
676                 flags |= FS_XFLAG_HASATTR;
677
678         return flags;
679 }
680
681 uint
682 xfs_ip2xflags(
683         struct xfs_inode        *ip)
684 {
685         struct xfs_icdinode     *dic = &ip->i_d;
686
687         return _xfs_dic2xflags(dic->di_flags, dic->di_flags2, XFS_IFORK_Q(ip));
688 }
689
690 /*
691  * Lookups up an inode from "name". If ci_name is not NULL, then a CI match
692  * is allowed, otherwise it has to be an exact match. If a CI match is found,
693  * ci_name->name will point to a the actual name (caller must free) or
694  * will be set to NULL if an exact match is found.
695  */
696 int
697 xfs_lookup(
698         xfs_inode_t             *dp,
699         struct xfs_name         *name,
700         xfs_inode_t             **ipp,
701         struct xfs_name         *ci_name)
702 {
703         xfs_ino_t               inum;
704         int                     error;
705
706         trace_xfs_lookup(dp, name);
707
708         if (XFS_FORCED_SHUTDOWN(dp->i_mount))
709                 return -EIO;
710
711         error = xfs_dir_lookup(NULL, dp, name, &inum, ci_name);
712         if (error)
713                 goto out_unlock;
714
715         error = xfs_iget(dp->i_mount, NULL, inum, 0, 0, ipp);
716         if (error)
717                 goto out_free_name;
718
719         return 0;
720
721 out_free_name:
722         if (ci_name)
723                 kmem_free(ci_name->name);
724 out_unlock:
725         *ipp = NULL;
726         return error;
727 }
728
729 /*
730  * Allocate an inode on disk and return a copy of its in-core version.
731  * The in-core inode is locked exclusively.  Set mode, nlink, and rdev
732  * appropriately within the inode.  The uid and gid for the inode are
733  * set according to the contents of the given cred structure.
734  *
735  * Use xfs_dialloc() to allocate the on-disk inode. If xfs_dialloc()
736  * has a free inode available, call xfs_iget() to obtain the in-core
737  * version of the allocated inode.  Finally, fill in the inode and
738  * log its initial contents.  In this case, ialloc_context would be
739  * set to NULL.
740  *
741  * If xfs_dialloc() does not have an available inode, it will replenish
742  * its supply by doing an allocation. Since we can only do one
743  * allocation within a transaction without deadlocks, we must commit
744  * the current transaction before returning the inode itself.
745  * In this case, therefore, we will set ialloc_context and return.
746  * The caller should then commit the current transaction, start a new
747  * transaction, and call xfs_ialloc() again to actually get the inode.
748  *
749  * To ensure that some other process does not grab the inode that
750  * was allocated during the first call to xfs_ialloc(), this routine
751  * also returns the [locked] bp pointing to the head of the freelist
752  * as ialloc_context.  The caller should hold this buffer across
753  * the commit and pass it back into this routine on the second call.
754  *
755  * If we are allocating quota inodes, we do not have a parent inode
756  * to attach to or associate with (i.e. pip == NULL) because they
757  * are not linked into the directory structure - they are attached
758  * directly to the superblock - and so have no parent.
759  */
760 static int
761 xfs_ialloc(
762         xfs_trans_t     *tp,
763         xfs_inode_t     *pip,
764         umode_t         mode,
765         xfs_nlink_t     nlink,
766         dev_t           rdev,
767         prid_t          prid,
768         xfs_buf_t       **ialloc_context,
769         xfs_inode_t     **ipp)
770 {
771         struct xfs_mount *mp = tp->t_mountp;
772         xfs_ino_t       ino;
773         xfs_inode_t     *ip;
774         uint            flags;
775         int             error;
776         struct timespec tv;
777         struct inode    *inode;
778
779         /*
780          * Call the space management code to pick
781          * the on-disk inode to be allocated.
782          */
783         error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode,
784                             ialloc_context, &ino);
785         if (error)
786                 return error;
787         if (*ialloc_context || ino == NULLFSINO) {
788                 *ipp = NULL;
789                 return 0;
790         }
791         ASSERT(*ialloc_context == NULL);
792
793         /*
794          * Get the in-core inode with the lock held exclusively.
795          * This is because we're setting fields here we need
796          * to prevent others from looking at until we're done.
797          */
798         error = xfs_iget(mp, tp, ino, XFS_IGET_CREATE,
799                          XFS_ILOCK_EXCL, &ip);
800         if (error)
801                 return error;
802         ASSERT(ip != NULL);
803         inode = VFS_I(ip);
804
805         /*
806          * We always convert v1 inodes to v2 now - we only support filesystems
807          * with >= v2 inode capability, so there is no reason for ever leaving
808          * an inode in v1 format.
809          */
810         if (ip->i_d.di_version == 1)
811                 ip->i_d.di_version = 2;
812
813         inode->i_mode = mode;
814         set_nlink(inode, nlink);
815         ip->i_d.di_uid = xfs_kuid_to_uid(current_fsuid());
816         ip->i_d.di_gid = xfs_kgid_to_gid(current_fsgid());
817         inode->i_rdev = rdev;
818         xfs_set_projid(ip, prid);
819
820         if (pip && XFS_INHERIT_GID(pip)) {
821                 ip->i_d.di_gid = pip->i_d.di_gid;
822                 if ((VFS_I(pip)->i_mode & S_ISGID) && S_ISDIR(mode))
823                         inode->i_mode |= S_ISGID;
824         }
825
826         /*
827          * If the group ID of the new file does not match the effective group
828          * ID or one of the supplementary group IDs, the S_ISGID bit is cleared
829          * (and only if the irix_sgid_inherit compatibility variable is set).
830          */
831         if ((irix_sgid_inherit) &&
832             (inode->i_mode & S_ISGID) &&
833             (!in_group_p(xfs_gid_to_kgid(ip->i_d.di_gid))))
834                 inode->i_mode &= ~S_ISGID;
835
836         ip->i_d.di_size = 0;
837         ip->i_d.di_nextents = 0;
838         ASSERT(ip->i_d.di_nblocks == 0);
839
840         tv = current_time(inode);
841         inode->i_mtime = tv;
842         inode->i_atime = tv;
843         inode->i_ctime = tv;
844
845         ip->i_d.di_extsize = 0;
846         ip->i_d.di_dmevmask = 0;
847         ip->i_d.di_dmstate = 0;
848         ip->i_d.di_flags = 0;
849
850         if (ip->i_d.di_version == 3) {
851                 inode_set_iversion(inode, 1);
852                 ip->i_d.di_flags2 = 0;
853                 ip->i_d.di_cowextsize = 0;
854                 ip->i_d.di_crtime.t_sec = (int32_t)tv.tv_sec;
855                 ip->i_d.di_crtime.t_nsec = (int32_t)tv.tv_nsec;
856         }
857
858
859         flags = XFS_ILOG_CORE;
860         switch (mode & S_IFMT) {
861         case S_IFIFO:
862         case S_IFCHR:
863         case S_IFBLK:
864         case S_IFSOCK:
865                 ip->i_d.di_format = XFS_DINODE_FMT_DEV;
866                 ip->i_df.if_flags = 0;
867                 flags |= XFS_ILOG_DEV;
868                 break;
869         case S_IFREG:
870         case S_IFDIR:
871                 if (pip && (pip->i_d.di_flags & XFS_DIFLAG_ANY)) {
872                         uint            di_flags = 0;
873
874                         if (S_ISDIR(mode)) {
875                                 if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT)
876                                         di_flags |= XFS_DIFLAG_RTINHERIT;
877                                 if (pip->i_d.di_flags & XFS_DIFLAG_EXTSZINHERIT) {
878                                         di_flags |= XFS_DIFLAG_EXTSZINHERIT;
879                                         ip->i_d.di_extsize = pip->i_d.di_extsize;
880                                 }
881                                 if (pip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)
882                                         di_flags |= XFS_DIFLAG_PROJINHERIT;
883                         } else if (S_ISREG(mode)) {
884                                 if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT)
885                                         di_flags |= XFS_DIFLAG_REALTIME;
886                                 if (pip->i_d.di_flags & XFS_DIFLAG_EXTSZINHERIT) {
887                                         di_flags |= XFS_DIFLAG_EXTSIZE;
888                                         ip->i_d.di_extsize = pip->i_d.di_extsize;
889                                 }
890                         }
891                         if ((pip->i_d.di_flags & XFS_DIFLAG_NOATIME) &&
892                             xfs_inherit_noatime)
893                                 di_flags |= XFS_DIFLAG_NOATIME;
894                         if ((pip->i_d.di_flags & XFS_DIFLAG_NODUMP) &&
895                             xfs_inherit_nodump)
896                                 di_flags |= XFS_DIFLAG_NODUMP;
897                         if ((pip->i_d.di_flags & XFS_DIFLAG_SYNC) &&
898                             xfs_inherit_sync)
899                                 di_flags |= XFS_DIFLAG_SYNC;
900                         if ((pip->i_d.di_flags & XFS_DIFLAG_NOSYMLINKS) &&
901                             xfs_inherit_nosymlinks)
902                                 di_flags |= XFS_DIFLAG_NOSYMLINKS;
903                         if ((pip->i_d.di_flags & XFS_DIFLAG_NODEFRAG) &&
904                             xfs_inherit_nodefrag)
905                                 di_flags |= XFS_DIFLAG_NODEFRAG;
906                         if (pip->i_d.di_flags & XFS_DIFLAG_FILESTREAM)
907                                 di_flags |= XFS_DIFLAG_FILESTREAM;
908
909                         ip->i_d.di_flags |= di_flags;
910                 }
911                 if (pip &&
912                     (pip->i_d.di_flags2 & XFS_DIFLAG2_ANY) &&
913                     pip->i_d.di_version == 3 &&
914                     ip->i_d.di_version == 3) {
915                         uint64_t        di_flags2 = 0;
916
917                         if (pip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE) {
918                                 di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
919                                 ip->i_d.di_cowextsize = pip->i_d.di_cowextsize;
920                         }
921                         if (pip->i_d.di_flags2 & XFS_DIFLAG2_DAX)
922                                 di_flags2 |= XFS_DIFLAG2_DAX;
923
924                         ip->i_d.di_flags2 |= di_flags2;
925                 }
926                 /* FALLTHROUGH */
927         case S_IFLNK:
928                 ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
929                 ip->i_df.if_flags = XFS_IFEXTENTS;
930                 ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0;
931                 ip->i_df.if_u1.if_root = NULL;
932                 break;
933         default:
934                 ASSERT(0);
935         }
936         /*
937          * Attribute fork settings for new inode.
938          */
939         ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS;
940         ip->i_d.di_anextents = 0;
941
942         /*
943          * Log the new values stuffed into the inode.
944          */
945         xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
946         xfs_trans_log_inode(tp, ip, flags);
947
948         /* now that we have an i_mode we can setup the inode structure */
949         xfs_setup_inode(ip);
950
951         *ipp = ip;
952         return 0;
953 }
954
955 /*
956  * Allocates a new inode from disk and return a pointer to the
957  * incore copy. This routine will internally commit the current
958  * transaction and allocate a new one if the Space Manager needed
959  * to do an allocation to replenish the inode free-list.
960  *
961  * This routine is designed to be called from xfs_create and
962  * xfs_create_dir.
963  *
964  */
965 int
966 xfs_dir_ialloc(
967         xfs_trans_t     **tpp,          /* input: current transaction;
968                                            output: may be a new transaction. */
969         xfs_inode_t     *dp,            /* directory within whose allocate
970                                            the inode. */
971         umode_t         mode,
972         xfs_nlink_t     nlink,
973         dev_t           rdev,
974         prid_t          prid,           /* project id */
975         xfs_inode_t     **ipp,          /* pointer to inode; it will be
976                                            locked. */
977         int             *committed)
978
979 {
980         xfs_trans_t     *tp;
981         xfs_inode_t     *ip;
982         xfs_buf_t       *ialloc_context = NULL;
983         int             code;
984         void            *dqinfo;
985         uint            tflags;
986
987         tp = *tpp;
988         ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES);
989
990         /*
991          * xfs_ialloc will return a pointer to an incore inode if
992          * the Space Manager has an available inode on the free
993          * list. Otherwise, it will do an allocation and replenish
994          * the freelist.  Since we can only do one allocation per
995          * transaction without deadlocks, we will need to commit the
996          * current transaction and start a new one.  We will then
997          * need to call xfs_ialloc again to get the inode.
998          *
999          * If xfs_ialloc did an allocation to replenish the freelist,
1000          * it returns the bp containing the head of the freelist as
1001          * ialloc_context. We will hold a lock on it across the
1002          * transaction commit so that no other process can steal
1003          * the inode(s) that we've just allocated.
1004          */
1005         code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, &ialloc_context,
1006                         &ip);
1007
1008         /*
1009          * Return an error if we were unable to allocate a new inode.
1010          * This should only happen if we run out of space on disk or
1011          * encounter a disk error.
1012          */
1013         if (code) {
1014                 *ipp = NULL;
1015                 return code;
1016         }
1017         if (!ialloc_context && !ip) {
1018                 *ipp = NULL;
1019                 return -ENOSPC;
1020         }
1021
1022         /*
1023          * If the AGI buffer is non-NULL, then we were unable to get an
1024          * inode in one operation.  We need to commit the current
1025          * transaction and call xfs_ialloc() again.  It is guaranteed
1026          * to succeed the second time.
1027          */
1028         if (ialloc_context) {
1029                 /*
1030                  * Normally, xfs_trans_commit releases all the locks.
1031                  * We call bhold to hang on to the ialloc_context across
1032                  * the commit.  Holding this buffer prevents any other
1033                  * processes from doing any allocations in this
1034                  * allocation group.
1035                  */
1036                 xfs_trans_bhold(tp, ialloc_context);
1037
1038                 /*
1039                  * We want the quota changes to be associated with the next
1040                  * transaction, NOT this one. So, detach the dqinfo from this
1041                  * and attach it to the next transaction.
1042                  */
1043                 dqinfo = NULL;
1044                 tflags = 0;
1045                 if (tp->t_dqinfo) {
1046                         dqinfo = (void *)tp->t_dqinfo;
1047                         tp->t_dqinfo = NULL;
1048                         tflags = tp->t_flags & XFS_TRANS_DQ_DIRTY;
1049                         tp->t_flags &= ~(XFS_TRANS_DQ_DIRTY);
1050                 }
1051
1052                 code = xfs_trans_roll(&tp);
1053                 if (committed != NULL)
1054                         *committed = 1;
1055
1056                 /*
1057                  * Re-attach the quota info that we detached from prev trx.
1058                  */
1059                 if (dqinfo) {
1060                         tp->t_dqinfo = dqinfo;
1061                         tp->t_flags |= tflags;
1062                 }
1063
1064                 if (code) {
1065                         xfs_buf_relse(ialloc_context);
1066                         *tpp = tp;
1067                         *ipp = NULL;
1068                         return code;
1069                 }
1070                 xfs_trans_bjoin(tp, ialloc_context);
1071
1072                 /*
1073                  * Call ialloc again. Since we've locked out all
1074                  * other allocations in this allocation group,
1075                  * this call should always succeed.
1076                  */
1077                 code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid,
1078                                   &ialloc_context, &ip);
1079
1080                 /*
1081                  * If we get an error at this point, return to the caller
1082                  * so that the current transaction can be aborted.
1083                  */
1084                 if (code) {
1085                         *tpp = tp;
1086                         *ipp = NULL;
1087                         return code;
1088                 }
1089                 ASSERT(!ialloc_context && ip);
1090
1091         } else {
1092                 if (committed != NULL)
1093                         *committed = 0;
1094         }
1095
1096         *ipp = ip;
1097         *tpp = tp;
1098
1099         return 0;
1100 }
1101
1102 /*
1103  * Decrement the link count on an inode & log the change.  If this causes the
1104  * link count to go to zero, move the inode to AGI unlinked list so that it can
1105  * be freed when the last active reference goes away via xfs_inactive().
1106  */
1107 static int                      /* error */
1108 xfs_droplink(
1109         xfs_trans_t *tp,
1110         xfs_inode_t *ip)
1111 {
1112         xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG);
1113
1114         drop_nlink(VFS_I(ip));
1115         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
1116
1117         if (VFS_I(ip)->i_nlink)
1118                 return 0;
1119
1120         return xfs_iunlink(tp, ip);
1121 }
1122
1123 /*
1124  * Increment the link count on an inode & log the change.
1125  */
1126 static int
1127 xfs_bumplink(
1128         xfs_trans_t *tp,
1129         xfs_inode_t *ip)
1130 {
1131         xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG);
1132
1133         ASSERT(ip->i_d.di_version > 1);
1134         inc_nlink(VFS_I(ip));
1135         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
1136         return 0;
1137 }
1138
1139 int
1140 xfs_create(
1141         xfs_inode_t             *dp,
1142         struct xfs_name         *name,
1143         umode_t                 mode,
1144         dev_t                   rdev,
1145         xfs_inode_t             **ipp)
1146 {
1147         int                     is_dir = S_ISDIR(mode);
1148         struct xfs_mount        *mp = dp->i_mount;
1149         struct xfs_inode        *ip = NULL;
1150         struct xfs_trans        *tp = NULL;
1151         int                     error;
1152         struct xfs_defer_ops    dfops;
1153         xfs_fsblock_t           first_block;
1154         bool                    unlock_dp_on_error = false;
1155         prid_t                  prid;
1156         struct xfs_dquot        *udqp = NULL;
1157         struct xfs_dquot        *gdqp = NULL;
1158         struct xfs_dquot        *pdqp = NULL;
1159         struct xfs_trans_res    *tres;
1160         uint                    resblks;
1161
1162         trace_xfs_create(dp, name);
1163
1164         if (XFS_FORCED_SHUTDOWN(mp))
1165                 return -EIO;
1166
1167         prid = xfs_get_initial_prid(dp);
1168
1169         /*
1170          * Make sure that we have allocated dquot(s) on disk.
1171          */
1172         error = xfs_qm_vop_dqalloc(dp, xfs_kuid_to_uid(current_fsuid()),
1173                                         xfs_kgid_to_gid(current_fsgid()), prid,
1174                                         XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
1175                                         &udqp, &gdqp, &pdqp);
1176         if (error)
1177                 return error;
1178
1179         if (is_dir) {
1180                 resblks = XFS_MKDIR_SPACE_RES(mp, name->len);
1181                 tres = &M_RES(mp)->tr_mkdir;
1182         } else {
1183                 resblks = XFS_CREATE_SPACE_RES(mp, name->len);
1184                 tres = &M_RES(mp)->tr_create;
1185         }
1186
1187         /*
1188          * Initially assume that the file does not exist and
1189          * reserve the resources for that case.  If that is not
1190          * the case we'll drop the one we have and get a more
1191          * appropriate transaction later.
1192          */
1193         error = xfs_trans_alloc(mp, tres, resblks, 0, 0, &tp);
1194         if (error == -ENOSPC) {
1195                 /* flush outstanding delalloc blocks and retry */
1196                 xfs_flush_inodes(mp);
1197                 error = xfs_trans_alloc(mp, tres, resblks, 0, 0, &tp);
1198         }
1199         if (error)
1200                 goto out_release_inode;
1201
1202         xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT);
1203         unlock_dp_on_error = true;
1204
1205         xfs_defer_init(&dfops, &first_block);
1206
1207         /*
1208          * Reserve disk quota and the inode.
1209          */
1210         error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp,
1211                                                 pdqp, resblks, 1, 0);
1212         if (error)
1213                 goto out_trans_cancel;
1214
1215         /*
1216          * A newly created regular or special file just has one directory
1217          * entry pointing to them, but a directory also the "." entry
1218          * pointing to itself.
1219          */
1220         error = xfs_dir_ialloc(&tp, dp, mode, is_dir ? 2 : 1, rdev, prid, &ip,
1221                         NULL);
1222         if (error)
1223                 goto out_trans_cancel;
1224
1225         /*
1226          * Now we join the directory inode to the transaction.  We do not do it
1227          * earlier because xfs_dir_ialloc might commit the previous transaction
1228          * (and release all the locks).  An error from here on will result in
1229          * the transaction cancel unlocking dp so don't do it explicitly in the
1230          * error path.
1231          */
1232         xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
1233         unlock_dp_on_error = false;
1234
1235         error = xfs_dir_createname(tp, dp, name, ip->i_ino,
1236                                         &first_block, &dfops, resblks ?
1237                                         resblks - XFS_IALLOC_SPACE_RES(mp) : 0);
1238         if (error) {
1239                 ASSERT(error != -ENOSPC);
1240                 goto out_trans_cancel;
1241         }
1242         xfs_trans_ichgtime(tp, dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
1243         xfs_trans_log_inode(tp, dp, XFS_ILOG_CORE);
1244
1245         if (is_dir) {
1246                 error = xfs_dir_init(tp, ip, dp);
1247                 if (error)
1248                         goto out_bmap_cancel;
1249
1250                 error = xfs_bumplink(tp, dp);
1251                 if (error)
1252                         goto out_bmap_cancel;
1253         }
1254
1255         /*
1256          * If this is a synchronous mount, make sure that the
1257          * create transaction goes to disk before returning to
1258          * the user.
1259          */
1260         if (mp->m_flags & (XFS_MOUNT_WSYNC|XFS_MOUNT_DIRSYNC))
1261                 xfs_trans_set_sync(tp);
1262
1263         /*
1264          * Attach the dquot(s) to the inodes and modify them incore.
1265          * These ids of the inode couldn't have changed since the new
1266          * inode has been locked ever since it was created.
1267          */
1268         xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp);
1269
1270         error = xfs_defer_finish(&tp, &dfops);
1271         if (error)
1272                 goto out_bmap_cancel;
1273
1274         error = xfs_trans_commit(tp);
1275         if (error)
1276                 goto out_release_inode;
1277
1278         xfs_qm_dqrele(udqp);
1279         xfs_qm_dqrele(gdqp);
1280         xfs_qm_dqrele(pdqp);
1281
1282         *ipp = ip;
1283         return 0;
1284
1285  out_bmap_cancel:
1286         xfs_defer_cancel(&dfops);
1287  out_trans_cancel:
1288         xfs_trans_cancel(tp);
1289  out_release_inode:
1290         /*
1291          * Wait until after the current transaction is aborted to finish the
1292          * setup of the inode and release the inode.  This prevents recursive
1293          * transactions and deadlocks from xfs_inactive.
1294          */
1295         if (ip) {
1296                 xfs_finish_inode_setup(ip);
1297                 IRELE(ip);
1298         }
1299
1300         xfs_qm_dqrele(udqp);
1301         xfs_qm_dqrele(gdqp);
1302         xfs_qm_dqrele(pdqp);
1303
1304         if (unlock_dp_on_error)
1305                 xfs_iunlock(dp, XFS_ILOCK_EXCL);
1306         return error;
1307 }
1308
1309 int
1310 xfs_create_tmpfile(
1311         struct xfs_inode        *dp,
1312         struct dentry           *dentry,
1313         umode_t                 mode,
1314         struct xfs_inode        **ipp)
1315 {
1316         struct xfs_mount        *mp = dp->i_mount;
1317         struct xfs_inode        *ip = NULL;
1318         struct xfs_trans        *tp = NULL;
1319         int                     error;
1320         prid_t                  prid;
1321         struct xfs_dquot        *udqp = NULL;
1322         struct xfs_dquot        *gdqp = NULL;
1323         struct xfs_dquot        *pdqp = NULL;
1324         struct xfs_trans_res    *tres;
1325         uint                    resblks;
1326
1327         if (XFS_FORCED_SHUTDOWN(mp))
1328                 return -EIO;
1329
1330         prid = xfs_get_initial_prid(dp);
1331
1332         /*
1333          * Make sure that we have allocated dquot(s) on disk.
1334          */
1335         error = xfs_qm_vop_dqalloc(dp, xfs_kuid_to_uid(current_fsuid()),
1336                                 xfs_kgid_to_gid(current_fsgid()), prid,
1337                                 XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
1338                                 &udqp, &gdqp, &pdqp);
1339         if (error)
1340                 return error;
1341
1342         resblks = XFS_IALLOC_SPACE_RES(mp);
1343         tres = &M_RES(mp)->tr_create_tmpfile;
1344
1345         error = xfs_trans_alloc(mp, tres, resblks, 0, 0, &tp);
1346         if (error)
1347                 goto out_release_inode;
1348
1349         error = xfs_trans_reserve_quota(tp, mp, udqp, gdqp,
1350                                                 pdqp, resblks, 1, 0);
1351         if (error)
1352                 goto out_trans_cancel;
1353
1354         error = xfs_dir_ialloc(&tp, dp, mode, 1, 0, prid, &ip, NULL);
1355         if (error)
1356                 goto out_trans_cancel;
1357
1358         if (mp->m_flags & XFS_MOUNT_WSYNC)
1359                 xfs_trans_set_sync(tp);
1360
1361         /*
1362          * Attach the dquot(s) to the inodes and modify them incore.
1363          * These ids of the inode couldn't have changed since the new
1364          * inode has been locked ever since it was created.
1365          */
1366         xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp);
1367
1368         error = xfs_iunlink(tp, ip);
1369         if (error)
1370                 goto out_trans_cancel;
1371
1372         error = xfs_trans_commit(tp);
1373         if (error)
1374                 goto out_release_inode;
1375
1376         xfs_qm_dqrele(udqp);
1377         xfs_qm_dqrele(gdqp);
1378         xfs_qm_dqrele(pdqp);
1379
1380         *ipp = ip;
1381         return 0;
1382
1383  out_trans_cancel:
1384         xfs_trans_cancel(tp);
1385  out_release_inode:
1386         /*
1387          * Wait until after the current transaction is aborted to finish the
1388          * setup of the inode and release the inode.  This prevents recursive
1389          * transactions and deadlocks from xfs_inactive.
1390          */
1391         if (ip) {
1392                 xfs_finish_inode_setup(ip);
1393                 IRELE(ip);
1394         }
1395
1396         xfs_qm_dqrele(udqp);
1397         xfs_qm_dqrele(gdqp);
1398         xfs_qm_dqrele(pdqp);
1399
1400         return error;
1401 }
1402
1403 int
1404 xfs_link(
1405         xfs_inode_t             *tdp,
1406         xfs_inode_t             *sip,
1407         struct xfs_name         *target_name)
1408 {
1409         xfs_mount_t             *mp = tdp->i_mount;
1410         xfs_trans_t             *tp;
1411         int                     error;
1412         struct xfs_defer_ops    dfops;
1413         xfs_fsblock_t           first_block;
1414         int                     resblks;
1415
1416         trace_xfs_link(tdp, target_name);
1417
1418         ASSERT(!S_ISDIR(VFS_I(sip)->i_mode));
1419
1420         if (XFS_FORCED_SHUTDOWN(mp))
1421                 return -EIO;
1422
1423         error = xfs_qm_dqattach(sip, 0);
1424         if (error)
1425                 goto std_return;
1426
1427         error = xfs_qm_dqattach(tdp, 0);
1428         if (error)
1429                 goto std_return;
1430
1431         resblks = XFS_LINK_SPACE_RES(mp, target_name->len);
1432         error = xfs_trans_alloc(mp, &M_RES(mp)->tr_link, resblks, 0, 0, &tp);
1433         if (error == -ENOSPC) {
1434                 resblks = 0;
1435                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_link, 0, 0, 0, &tp);
1436         }
1437         if (error)
1438                 goto std_return;
1439
1440         xfs_lock_two_inodes(sip, XFS_ILOCK_EXCL, tdp, XFS_ILOCK_EXCL);
1441
1442         xfs_trans_ijoin(tp, sip, XFS_ILOCK_EXCL);
1443         xfs_trans_ijoin(tp, tdp, XFS_ILOCK_EXCL);
1444
1445         /*
1446          * If we are using project inheritance, we only allow hard link
1447          * creation in our tree when the project IDs are the same; else
1448          * the tree quota mechanism could be circumvented.
1449          */
1450         if (unlikely((tdp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) &&
1451                      (xfs_get_projid(tdp) != xfs_get_projid(sip)))) {
1452                 error = -EXDEV;
1453                 goto error_return;
1454         }
1455
1456         if (!resblks) {
1457                 error = xfs_dir_canenter(tp, tdp, target_name);
1458                 if (error)
1459                         goto error_return;
1460         }
1461
1462         xfs_defer_init(&dfops, &first_block);
1463
1464         /*
1465          * Handle initial link state of O_TMPFILE inode
1466          */
1467         if (VFS_I(sip)->i_nlink == 0) {
1468                 error = xfs_iunlink_remove(tp, sip);
1469                 if (error)
1470                         goto error_return;
1471         }
1472
1473         error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino,
1474                                         &first_block, &dfops, resblks);
1475         if (error)
1476                 goto error_return;
1477         xfs_trans_ichgtime(tp, tdp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
1478         xfs_trans_log_inode(tp, tdp, XFS_ILOG_CORE);
1479
1480         error = xfs_bumplink(tp, sip);
1481         if (error)
1482                 goto error_return;
1483
1484         /*
1485          * If this is a synchronous mount, make sure that the
1486          * link transaction goes to disk before returning to
1487          * the user.
1488          */
1489         if (mp->m_flags & (XFS_MOUNT_WSYNC|XFS_MOUNT_DIRSYNC))
1490                 xfs_trans_set_sync(tp);
1491
1492         error = xfs_defer_finish(&tp, &dfops);
1493         if (error) {
1494                 xfs_defer_cancel(&dfops);
1495                 goto error_return;
1496         }
1497
1498         return xfs_trans_commit(tp);
1499
1500  error_return:
1501         xfs_trans_cancel(tp);
1502  std_return:
1503         return error;
1504 }
1505
1506 /* Clear the reflink flag and the cowblocks tag if possible. */
1507 static void
1508 xfs_itruncate_clear_reflink_flags(
1509         struct xfs_inode        *ip)
1510 {
1511         struct xfs_ifork        *dfork;
1512         struct xfs_ifork        *cfork;
1513
1514         if (!xfs_is_reflink_inode(ip))
1515                 return;
1516         dfork = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
1517         cfork = XFS_IFORK_PTR(ip, XFS_COW_FORK);
1518         if (dfork->if_bytes == 0 && cfork->if_bytes == 0)
1519                 ip->i_d.di_flags2 &= ~XFS_DIFLAG2_REFLINK;
1520         if (cfork->if_bytes == 0)
1521                 xfs_inode_clear_cowblocks_tag(ip);
1522 }
1523
1524 /*
1525  * Free up the underlying blocks past new_size.  The new size must be smaller
1526  * than the current size.  This routine can be used both for the attribute and
1527  * data fork, and does not modify the inode size, which is left to the caller.
1528  *
1529  * The transaction passed to this routine must have made a permanent log
1530  * reservation of at least XFS_ITRUNCATE_LOG_RES.  This routine may commit the
1531  * given transaction and start new ones, so make sure everything involved in
1532  * the transaction is tidy before calling here.  Some transaction will be
1533  * returned to the caller to be committed.  The incoming transaction must
1534  * already include the inode, and both inode locks must be held exclusively.
1535  * The inode must also be "held" within the transaction.  On return the inode
1536  * will be "held" within the returned transaction.  This routine does NOT
1537  * require any disk space to be reserved for it within the transaction.
1538  *
1539  * If we get an error, we must return with the inode locked and linked into the
1540  * current transaction. This keeps things simple for the higher level code,
1541  * because it always knows that the inode is locked and held in the transaction
1542  * that returns to it whether errors occur or not.  We don't mark the inode
1543  * dirty on error so that transactions can be easily aborted if possible.
1544  */
1545 int
1546 xfs_itruncate_extents(
1547         struct xfs_trans        **tpp,
1548         struct xfs_inode        *ip,
1549         int                     whichfork,
1550         xfs_fsize_t             new_size)
1551 {
1552         struct xfs_mount        *mp = ip->i_mount;
1553         struct xfs_trans        *tp = *tpp;
1554         struct xfs_defer_ops    dfops;
1555         xfs_fsblock_t           first_block;
1556         xfs_fileoff_t           first_unmap_block;
1557         xfs_fileoff_t           last_block;
1558         xfs_filblks_t           unmap_len;
1559         int                     error = 0;
1560         int                     done = 0;
1561
1562         ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
1563         ASSERT(!atomic_read(&VFS_I(ip)->i_count) ||
1564                xfs_isilocked(ip, XFS_IOLOCK_EXCL));
1565         ASSERT(new_size <= XFS_ISIZE(ip));
1566         ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES);
1567         ASSERT(ip->i_itemp != NULL);
1568         ASSERT(ip->i_itemp->ili_lock_flags == 0);
1569         ASSERT(!XFS_NOT_DQATTACHED(mp, ip));
1570
1571         trace_xfs_itruncate_extents_start(ip, new_size);
1572
1573         /*
1574          * Since it is possible for space to become allocated beyond
1575          * the end of the file (in a crash where the space is allocated
1576          * but the inode size is not yet updated), simply remove any
1577          * blocks which show up between the new EOF and the maximum
1578          * possible file size.  If the first block to be removed is
1579          * beyond the maximum file size (ie it is the same as last_block),
1580          * then there is nothing to do.
1581          */
1582         first_unmap_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size);
1583         last_block = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes);
1584         if (first_unmap_block == last_block)
1585                 return 0;
1586
1587         ASSERT(first_unmap_block < last_block);
1588         unmap_len = last_block - first_unmap_block + 1;
1589         while (!done) {
1590                 xfs_defer_init(&dfops, &first_block);
1591                 error = xfs_bunmapi(tp, ip,
1592                                     first_unmap_block, unmap_len,
1593                                     xfs_bmapi_aflag(whichfork),
1594                                     XFS_ITRUNC_MAX_EXTENTS,
1595                                     &first_block, &dfops,
1596                                     &done);
1597                 if (error)
1598                         goto out_bmap_cancel;
1599
1600                 /*
1601                  * Duplicate the transaction that has the permanent
1602                  * reservation and commit the old transaction.
1603                  */
1604                 xfs_defer_ijoin(&dfops, ip);
1605                 error = xfs_defer_finish(&tp, &dfops);
1606                 if (error)
1607                         goto out_bmap_cancel;
1608
1609                 error = xfs_trans_roll_inode(&tp, ip);
1610                 if (error)
1611                         goto out;
1612         }
1613
1614         /* Remove all pending CoW reservations. */
1615         error = xfs_reflink_cancel_cow_blocks(ip, &tp, first_unmap_block,
1616                         last_block, true);
1617         if (error)
1618                 goto out;
1619
1620         xfs_itruncate_clear_reflink_flags(ip);
1621
1622         /*
1623          * Always re-log the inode so that our permanent transaction can keep
1624          * on rolling it forward in the log.
1625          */
1626         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
1627
1628         trace_xfs_itruncate_extents_end(ip, new_size);
1629
1630 out:
1631         *tpp = tp;
1632         return error;
1633 out_bmap_cancel:
1634         /*
1635          * If the bunmapi call encounters an error, return to the caller where
1636          * the transaction can be properly aborted.  We just need to make sure
1637          * we're not holding any resources that we were not when we came in.
1638          */
1639         xfs_defer_cancel(&dfops);
1640         goto out;
1641 }
1642
1643 int
1644 xfs_release(
1645         xfs_inode_t     *ip)
1646 {
1647         xfs_mount_t     *mp = ip->i_mount;
1648         int             error;
1649
1650         if (!S_ISREG(VFS_I(ip)->i_mode) || (VFS_I(ip)->i_mode == 0))
1651                 return 0;
1652
1653         /* If this is a read-only mount, don't do this (would generate I/O) */
1654         if (mp->m_flags & XFS_MOUNT_RDONLY)
1655                 return 0;
1656
1657         if (!XFS_FORCED_SHUTDOWN(mp)) {
1658                 int truncated;
1659
1660                 /*
1661                  * If we previously truncated this file and removed old data
1662                  * in the process, we want to initiate "early" writeout on
1663                  * the last close.  This is an attempt to combat the notorious
1664                  * NULL files problem which is particularly noticeable from a
1665                  * truncate down, buffered (re-)write (delalloc), followed by
1666                  * a crash.  What we are effectively doing here is
1667                  * significantly reducing the time window where we'd otherwise
1668                  * be exposed to that problem.
1669                  */
1670                 truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED);
1671                 if (truncated) {
1672                         xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE);
1673                         if (ip->i_delayed_blks > 0) {
1674                                 error = filemap_flush(VFS_I(ip)->i_mapping);
1675                                 if (error)
1676                                         return error;
1677                         }
1678                 }
1679         }
1680
1681         if (VFS_I(ip)->i_nlink == 0)
1682                 return 0;
1683
1684         if (xfs_can_free_eofblocks(ip, false)) {
1685
1686                 /*
1687                  * Check if the inode is being opened, written and closed
1688                  * frequently and we have delayed allocation blocks outstanding
1689                  * (e.g. streaming writes from the NFS server), truncating the
1690                  * blocks past EOF will cause fragmentation to occur.
1691                  *
1692                  * In this case don't do the truncation, but we have to be
1693                  * careful how we detect this case. Blocks beyond EOF show up as
1694                  * i_delayed_blks even when the inode is clean, so we need to
1695                  * truncate them away first before checking for a dirty release.
1696                  * Hence on the first dirty close we will still remove the
1697                  * speculative allocation, but after that we will leave it in
1698                  * place.
1699                  */
1700                 if (xfs_iflags_test(ip, XFS_IDIRTY_RELEASE))
1701                         return 0;
1702                 /*
1703                  * If we can't get the iolock just skip truncating the blocks
1704                  * past EOF because we could deadlock with the mmap_sem
1705                  * otherwise. We'll get another chance to drop them once the
1706                  * last reference to the inode is dropped, so we'll never leak
1707                  * blocks permanently.
1708                  */
1709                 if (xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) {
1710                         error = xfs_free_eofblocks(ip);
1711                         xfs_iunlock(ip, XFS_IOLOCK_EXCL);
1712                         if (error)
1713                                 return error;
1714                 }
1715
1716                 /* delalloc blocks after truncation means it really is dirty */
1717                 if (ip->i_delayed_blks)
1718                         xfs_iflags_set(ip, XFS_IDIRTY_RELEASE);
1719         }
1720         return 0;
1721 }
1722
1723 /*
1724  * xfs_inactive_truncate
1725  *
1726  * Called to perform a truncate when an inode becomes unlinked.
1727  */
1728 STATIC int
1729 xfs_inactive_truncate(
1730         struct xfs_inode *ip)
1731 {
1732         struct xfs_mount        *mp = ip->i_mount;
1733         struct xfs_trans        *tp;
1734         int                     error;
1735
1736         error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
1737         if (error) {
1738                 ASSERT(XFS_FORCED_SHUTDOWN(mp));
1739                 return error;
1740         }
1741
1742         xfs_ilock(ip, XFS_ILOCK_EXCL);
1743         xfs_trans_ijoin(tp, ip, 0);
1744
1745         /*
1746          * Log the inode size first to prevent stale data exposure in the event
1747          * of a system crash before the truncate completes. See the related
1748          * comment in xfs_vn_setattr_size() for details.
1749          */
1750         ip->i_d.di_size = 0;
1751         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
1752
1753         error = xfs_itruncate_extents(&tp, ip, XFS_DATA_FORK, 0);
1754         if (error)
1755                 goto error_trans_cancel;
1756
1757         ASSERT(ip->i_d.di_nextents == 0);
1758
1759         error = xfs_trans_commit(tp);
1760         if (error)
1761                 goto error_unlock;
1762
1763         xfs_iunlock(ip, XFS_ILOCK_EXCL);
1764         return 0;
1765
1766 error_trans_cancel:
1767         xfs_trans_cancel(tp);
1768 error_unlock:
1769         xfs_iunlock(ip, XFS_ILOCK_EXCL);
1770         return error;
1771 }
1772
1773 /*
1774  * xfs_inactive_ifree()
1775  *
1776  * Perform the inode free when an inode is unlinked.
1777  */
1778 STATIC int
1779 xfs_inactive_ifree(
1780         struct xfs_inode *ip)
1781 {
1782         struct xfs_defer_ops    dfops;
1783         xfs_fsblock_t           first_block;
1784         struct xfs_mount        *mp = ip->i_mount;
1785         struct xfs_trans        *tp;
1786         int                     error;
1787
1788         /*
1789          * We try to use a per-AG reservation for any block needed by the finobt
1790          * tree, but as the finobt feature predates the per-AG reservation
1791          * support a degraded file system might not have enough space for the
1792          * reservation at mount time.  In that case try to dip into the reserved
1793          * pool and pray.
1794          *
1795          * Send a warning if the reservation does happen to fail, as the inode
1796          * now remains allocated and sits on the unlinked list until the fs is
1797          * repaired.
1798          */
1799         if (unlikely(mp->m_inotbt_nores)) {
1800                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_ifree,
1801                                 XFS_IFREE_SPACE_RES(mp), 0, XFS_TRANS_RESERVE,
1802                                 &tp);
1803         } else {
1804                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_ifree, 0, 0, 0, &tp);
1805         }
1806         if (error) {
1807                 if (error == -ENOSPC) {
1808                         xfs_warn_ratelimited(mp,
1809                         "Failed to remove inode(s) from unlinked list. "
1810                         "Please free space, unmount and run xfs_repair.");
1811                 } else {
1812                         ASSERT(XFS_FORCED_SHUTDOWN(mp));
1813                 }
1814                 return error;
1815         }
1816
1817         xfs_ilock(ip, XFS_ILOCK_EXCL);
1818         xfs_trans_ijoin(tp, ip, 0);
1819
1820         xfs_defer_init(&dfops, &first_block);
1821         error = xfs_ifree(tp, ip, &dfops);
1822         if (error) {
1823                 /*
1824                  * If we fail to free the inode, shut down.  The cancel
1825                  * might do that, we need to make sure.  Otherwise the
1826                  * inode might be lost for a long time or forever.
1827                  */
1828                 if (!XFS_FORCED_SHUTDOWN(mp)) {
1829                         xfs_notice(mp, "%s: xfs_ifree returned error %d",
1830                                 __func__, error);
1831                         xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR);
1832                 }
1833                 xfs_trans_cancel(tp);
1834                 xfs_iunlock(ip, XFS_ILOCK_EXCL);
1835                 return error;
1836         }
1837
1838         /*
1839          * Credit the quota account(s). The inode is gone.
1840          */
1841         xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_ICOUNT, -1);
1842
1843         /*
1844          * Just ignore errors at this point.  There is nothing we can do except
1845          * to try to keep going. Make sure it's not a silent error.
1846          */
1847         error = xfs_defer_finish(&tp, &dfops);
1848         if (error) {
1849                 xfs_notice(mp, "%s: xfs_defer_finish returned error %d",
1850                         __func__, error);
1851                 xfs_defer_cancel(&dfops);
1852         }
1853         error = xfs_trans_commit(tp);
1854         if (error)
1855                 xfs_notice(mp, "%s: xfs_trans_commit returned error %d",
1856                         __func__, error);
1857
1858         xfs_iunlock(ip, XFS_ILOCK_EXCL);
1859         return 0;
1860 }
1861
1862 /*
1863  * xfs_inactive
1864  *
1865  * This is called when the vnode reference count for the vnode
1866  * goes to zero.  If the file has been unlinked, then it must
1867  * now be truncated.  Also, we clear all of the read-ahead state
1868  * kept for the inode here since the file is now closed.
1869  */
1870 void
1871 xfs_inactive(
1872         xfs_inode_t     *ip)
1873 {
1874         struct xfs_mount        *mp;
1875         struct xfs_ifork        *cow_ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
1876         int                     error;
1877         int                     truncate = 0;
1878
1879         /*
1880          * If the inode is already free, then there can be nothing
1881          * to clean up here.
1882          */
1883         if (VFS_I(ip)->i_mode == 0) {
1884                 ASSERT(ip->i_df.if_real_bytes == 0);
1885                 ASSERT(ip->i_df.if_broot_bytes == 0);
1886                 return;
1887         }
1888
1889         mp = ip->i_mount;
1890         ASSERT(!xfs_iflags_test(ip, XFS_IRECOVERY));
1891
1892         /* If this is a read-only mount, don't do this (would generate I/O) */
1893         if (mp->m_flags & XFS_MOUNT_RDONLY)
1894                 return;
1895
1896         /* Try to clean out the cow blocks if there are any. */
1897         if (xfs_is_reflink_inode(ip) && cow_ifp->if_bytes > 0)
1898                 xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, true);
1899
1900         if (VFS_I(ip)->i_nlink != 0) {
1901                 /*
1902                  * force is true because we are evicting an inode from the
1903                  * cache. Post-eof blocks must be freed, lest we end up with
1904                  * broken free space accounting.
1905                  *
1906                  * Note: don't bother with iolock here since lockdep complains
1907                  * about acquiring it in reclaim context. We have the only
1908                  * reference to the inode at this point anyways.
1909                  */
1910                 if (xfs_can_free_eofblocks(ip, true))
1911                         xfs_free_eofblocks(ip);
1912
1913                 return;
1914         }
1915
1916         if (S_ISREG(VFS_I(ip)->i_mode) &&
1917             (ip->i_d.di_size != 0 || XFS_ISIZE(ip) != 0 ||
1918              ip->i_d.di_nextents > 0 || ip->i_delayed_blks > 0))
1919                 truncate = 1;
1920
1921         error = xfs_qm_dqattach(ip, 0);
1922         if (error)
1923                 return;
1924
1925         if (S_ISLNK(VFS_I(ip)->i_mode))
1926                 error = xfs_inactive_symlink(ip);
1927         else if (truncate)
1928                 error = xfs_inactive_truncate(ip);
1929         if (error)
1930                 return;
1931
1932         /*
1933          * If there are attributes associated with the file then blow them away
1934          * now.  The code calls a routine that recursively deconstructs the
1935          * attribute fork. If also blows away the in-core attribute fork.
1936          */
1937         if (XFS_IFORK_Q(ip)) {
1938                 error = xfs_attr_inactive(ip);
1939                 if (error)
1940                         return;
1941         }
1942
1943         ASSERT(!ip->i_afp);
1944         ASSERT(ip->i_d.di_anextents == 0);
1945         ASSERT(ip->i_d.di_forkoff == 0);
1946
1947         /*
1948          * Free the inode.
1949          */
1950         error = xfs_inactive_ifree(ip);
1951         if (error)
1952                 return;
1953
1954         /*
1955          * Release the dquots held by inode, if any.
1956          */
1957         xfs_qm_dqdetach(ip);
1958 }
1959
1960 /*
1961  * This is called when the inode's link count goes to 0 or we are creating a
1962  * tmpfile via O_TMPFILE. In the case of a tmpfile, @ignore_linkcount will be
1963  * set to true as the link count is dropped to zero by the VFS after we've
1964  * created the file successfully, so we have to add it to the unlinked list
1965  * while the link count is non-zero.
1966  *
1967  * We place the on-disk inode on a list in the AGI.  It will be pulled from this
1968  * list when the inode is freed.
1969  */
1970 STATIC int
1971 xfs_iunlink(
1972         struct xfs_trans *tp,
1973         struct xfs_inode *ip)
1974 {
1975         xfs_mount_t     *mp = tp->t_mountp;
1976         xfs_agi_t       *agi;
1977         xfs_dinode_t    *dip;
1978         xfs_buf_t       *agibp;
1979         xfs_buf_t       *ibp;
1980         xfs_agino_t     agino;
1981         short           bucket_index;
1982         int             offset;
1983         int             error;
1984
1985         ASSERT(VFS_I(ip)->i_mode != 0);
1986
1987         /*
1988          * Get the agi buffer first.  It ensures lock ordering
1989          * on the list.
1990          */
1991         error = xfs_read_agi(mp, tp, XFS_INO_TO_AGNO(mp, ip->i_ino), &agibp);
1992         if (error)
1993                 return error;
1994         agi = XFS_BUF_TO_AGI(agibp);
1995
1996         /*
1997          * Get the index into the agi hash table for the
1998          * list this inode will go on.
1999          */
2000         agino = XFS_INO_TO_AGINO(mp, ip->i_ino);
2001         ASSERT(agino != 0);
2002         bucket_index = agino % XFS_AGI_UNLINKED_BUCKETS;
2003         ASSERT(agi->agi_unlinked[bucket_index]);
2004         ASSERT(be32_to_cpu(agi->agi_unlinked[bucket_index]) != agino);
2005
2006         if (agi->agi_unlinked[bucket_index] != cpu_to_be32(NULLAGINO)) {
2007                 /*
2008                  * There is already another inode in the bucket we need
2009                  * to add ourselves to.  Add us at the front of the list.
2010                  * Here we put the head pointer into our next pointer,
2011                  * and then we fall through to point the head at us.
2012                  */
2013                 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp,
2014                                        0, 0);
2015                 if (error)
2016                         return error;
2017
2018                 ASSERT(dip->di_next_unlinked == cpu_to_be32(NULLAGINO));
2019                 dip->di_next_unlinked = agi->agi_unlinked[bucket_index];
2020                 offset = ip->i_imap.im_boffset +
2021                         offsetof(xfs_dinode_t, di_next_unlinked);
2022
2023                 /* need to recalc the inode CRC if appropriate */
2024                 xfs_dinode_calc_crc(mp, dip);
2025
2026                 xfs_trans_inode_buf(tp, ibp);
2027                 xfs_trans_log_buf(tp, ibp, offset,
2028                                   (offset + sizeof(xfs_agino_t) - 1));
2029                 xfs_inobp_check(mp, ibp);
2030         }
2031
2032         /*
2033          * Point the bucket head pointer at the inode being inserted.
2034          */
2035         ASSERT(agino != 0);
2036         agi->agi_unlinked[bucket_index] = cpu_to_be32(agino);
2037         offset = offsetof(xfs_agi_t, agi_unlinked) +
2038                 (sizeof(xfs_agino_t) * bucket_index);
2039         xfs_trans_log_buf(tp, agibp, offset,
2040                           (offset + sizeof(xfs_agino_t) - 1));
2041         return 0;
2042 }
2043
2044 /*
2045  * Pull the on-disk inode from the AGI unlinked list.
2046  */
2047 STATIC int
2048 xfs_iunlink_remove(
2049         xfs_trans_t     *tp,
2050         xfs_inode_t     *ip)
2051 {
2052         xfs_ino_t       next_ino;
2053         xfs_mount_t     *mp;
2054         xfs_agi_t       *agi;
2055         xfs_dinode_t    *dip;
2056         xfs_buf_t       *agibp;
2057         xfs_buf_t       *ibp;
2058         xfs_agnumber_t  agno;
2059         xfs_agino_t     agino;
2060         xfs_agino_t     next_agino;
2061         xfs_buf_t       *last_ibp;
2062         xfs_dinode_t    *last_dip = NULL;
2063         short           bucket_index;
2064         int             offset, last_offset = 0;
2065         int             error;
2066
2067         mp = tp->t_mountp;
2068         agno = XFS_INO_TO_AGNO(mp, ip->i_ino);
2069
2070         /*
2071          * Get the agi buffer first.  It ensures lock ordering
2072          * on the list.
2073          */
2074         error = xfs_read_agi(mp, tp, agno, &agibp);
2075         if (error)
2076                 return error;
2077
2078         agi = XFS_BUF_TO_AGI(agibp);
2079
2080         /*
2081          * Get the index into the agi hash table for the
2082          * list this inode will go on.
2083          */
2084         agino = XFS_INO_TO_AGINO(mp, ip->i_ino);
2085         ASSERT(agino != 0);
2086         bucket_index = agino % XFS_AGI_UNLINKED_BUCKETS;
2087         ASSERT(agi->agi_unlinked[bucket_index] != cpu_to_be32(NULLAGINO));
2088         ASSERT(agi->agi_unlinked[bucket_index]);
2089
2090         if (be32_to_cpu(agi->agi_unlinked[bucket_index]) == agino) {
2091                 /*
2092                  * We're at the head of the list.  Get the inode's on-disk
2093                  * buffer to see if there is anyone after us on the list.
2094                  * Only modify our next pointer if it is not already NULLAGINO.
2095                  * This saves us the overhead of dealing with the buffer when
2096                  * there is no need to change it.
2097                  */
2098                 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp,
2099                                        0, 0);
2100                 if (error) {
2101                         xfs_warn(mp, "%s: xfs_imap_to_bp returned error %d.",
2102                                 __func__, error);
2103                         return error;
2104                 }
2105                 next_agino = be32_to_cpu(dip->di_next_unlinked);
2106                 ASSERT(next_agino != 0);
2107                 if (next_agino != NULLAGINO) {
2108                         dip->di_next_unlinked = cpu_to_be32(NULLAGINO);
2109                         offset = ip->i_imap.im_boffset +
2110                                 offsetof(xfs_dinode_t, di_next_unlinked);
2111
2112                         /* need to recalc the inode CRC if appropriate */
2113                         xfs_dinode_calc_crc(mp, dip);
2114
2115                         xfs_trans_inode_buf(tp, ibp);
2116                         xfs_trans_log_buf(tp, ibp, offset,
2117                                           (offset + sizeof(xfs_agino_t) - 1));
2118                         xfs_inobp_check(mp, ibp);
2119                 } else {
2120                         xfs_trans_brelse(tp, ibp);
2121                 }
2122                 /*
2123                  * Point the bucket head pointer at the next inode.
2124                  */
2125                 ASSERT(next_agino != 0);
2126                 ASSERT(next_agino != agino);
2127                 agi->agi_unlinked[bucket_index] = cpu_to_be32(next_agino);
2128                 offset = offsetof(xfs_agi_t, agi_unlinked) +
2129                         (sizeof(xfs_agino_t) * bucket_index);
2130                 xfs_trans_log_buf(tp, agibp, offset,
2131                                   (offset + sizeof(xfs_agino_t) - 1));
2132         } else {
2133                 /*
2134                  * We need to search the list for the inode being freed.
2135                  */
2136                 next_agino = be32_to_cpu(agi->agi_unlinked[bucket_index]);
2137                 last_ibp = NULL;
2138                 while (next_agino != agino) {
2139                         struct xfs_imap imap;
2140
2141                         if (last_ibp)
2142                                 xfs_trans_brelse(tp, last_ibp);
2143
2144                         imap.im_blkno = 0;
2145                         next_ino = XFS_AGINO_TO_INO(mp, agno, next_agino);
2146
2147                         error = xfs_imap(mp, tp, next_ino, &imap, 0);
2148                         if (error) {
2149                                 xfs_warn(mp,
2150         "%s: xfs_imap returned error %d.",
2151                                          __func__, error);
2152                                 return error;
2153                         }
2154
2155                         error = xfs_imap_to_bp(mp, tp, &imap, &last_dip,
2156                                                &last_ibp, 0, 0);
2157                         if (error) {
2158                                 xfs_warn(mp,
2159         "%s: xfs_imap_to_bp returned error %d.",
2160                                         __func__, error);
2161                                 return error;
2162                         }
2163
2164                         last_offset = imap.im_boffset;
2165                         next_agino = be32_to_cpu(last_dip->di_next_unlinked);
2166                         ASSERT(next_agino != NULLAGINO);
2167                         ASSERT(next_agino != 0);
2168                 }
2169
2170                 /*
2171                  * Now last_ibp points to the buffer previous to us on the
2172                  * unlinked list.  Pull us from the list.
2173                  */
2174                 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp,
2175                                        0, 0);
2176                 if (error) {
2177                         xfs_warn(mp, "%s: xfs_imap_to_bp(2) returned error %d.",
2178                                 __func__, error);
2179                         return error;
2180                 }
2181                 next_agino = be32_to_cpu(dip->di_next_unlinked);
2182                 ASSERT(next_agino != 0);
2183                 ASSERT(next_agino != agino);
2184                 if (next_agino != NULLAGINO) {
2185                         dip->di_next_unlinked = cpu_to_be32(NULLAGINO);
2186                         offset = ip->i_imap.im_boffset +
2187                                 offsetof(xfs_dinode_t, di_next_unlinked);
2188
2189                         /* need to recalc the inode CRC if appropriate */
2190                         xfs_dinode_calc_crc(mp, dip);
2191
2192                         xfs_trans_inode_buf(tp, ibp);
2193                         xfs_trans_log_buf(tp, ibp, offset,
2194                                           (offset + sizeof(xfs_agino_t) - 1));
2195                         xfs_inobp_check(mp, ibp);
2196                 } else {
2197                         xfs_trans_brelse(tp, ibp);
2198                 }
2199                 /*
2200                  * Point the previous inode on the list to the next inode.
2201                  */
2202                 last_dip->di_next_unlinked = cpu_to_be32(next_agino);
2203                 ASSERT(next_agino != 0);
2204                 offset = last_offset + offsetof(xfs_dinode_t, di_next_unlinked);
2205
2206                 /* need to recalc the inode CRC if appropriate */
2207                 xfs_dinode_calc_crc(mp, last_dip);
2208
2209                 xfs_trans_inode_buf(tp, last_ibp);
2210                 xfs_trans_log_buf(tp, last_ibp, offset,
2211                                   (offset + sizeof(xfs_agino_t) - 1));
2212                 xfs_inobp_check(mp, last_ibp);
2213         }
2214         return 0;
2215 }
2216
2217 /*
2218  * A big issue when freeing the inode cluster is that we _cannot_ skip any
2219  * inodes that are in memory - they all must be marked stale and attached to
2220  * the cluster buffer.
2221  */
2222 STATIC int
2223 xfs_ifree_cluster(
2224         xfs_inode_t             *free_ip,
2225         xfs_trans_t             *tp,
2226         struct xfs_icluster     *xic)
2227 {
2228         xfs_mount_t             *mp = free_ip->i_mount;
2229         int                     blks_per_cluster;
2230         int                     inodes_per_cluster;
2231         int                     nbufs;
2232         int                     i, j;
2233         int                     ioffset;
2234         xfs_daddr_t             blkno;
2235         xfs_buf_t               *bp;
2236         xfs_inode_t             *ip;
2237         xfs_inode_log_item_t    *iip;
2238         struct xfs_log_item     *lip;
2239         struct xfs_perag        *pag;
2240         xfs_ino_t               inum;
2241
2242         inum = xic->first_ino;
2243         pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, inum));
2244         blks_per_cluster = xfs_icluster_size_fsb(mp);
2245         inodes_per_cluster = blks_per_cluster << mp->m_sb.sb_inopblog;
2246         nbufs = mp->m_ialloc_blks / blks_per_cluster;
2247
2248         for (j = 0; j < nbufs; j++, inum += inodes_per_cluster) {
2249                 /*
2250                  * The allocation bitmap tells us which inodes of the chunk were
2251                  * physically allocated. Skip the cluster if an inode falls into
2252                  * a sparse region.
2253                  */
2254                 ioffset = inum - xic->first_ino;
2255                 if ((xic->alloc & XFS_INOBT_MASK(ioffset)) == 0) {
2256                         ASSERT(do_mod(ioffset, inodes_per_cluster) == 0);
2257                         continue;
2258                 }
2259
2260                 blkno = XFS_AGB_TO_DADDR(mp, XFS_INO_TO_AGNO(mp, inum),
2261                                          XFS_INO_TO_AGBNO(mp, inum));
2262
2263                 /*
2264                  * We obtain and lock the backing buffer first in the process
2265                  * here, as we have to ensure that any dirty inode that we
2266                  * can't get the flush lock on is attached to the buffer.
2267                  * If we scan the in-memory inodes first, then buffer IO can
2268                  * complete before we get a lock on it, and hence we may fail
2269                  * to mark all the active inodes on the buffer stale.
2270                  */
2271                 bp = xfs_trans_get_buf(tp, mp->m_ddev_targp, blkno,
2272                                         mp->m_bsize * blks_per_cluster,
2273                                         XBF_UNMAPPED);
2274
2275                 if (!bp)
2276                         return -ENOMEM;
2277
2278                 /*
2279                  * This buffer may not have been correctly initialised as we
2280                  * didn't read it from disk. That's not important because we are
2281                  * only using to mark the buffer as stale in the log, and to
2282                  * attach stale cached inodes on it. That means it will never be
2283                  * dispatched for IO. If it is, we want to know about it, and we
2284                  * want it to fail. We can acheive this by adding a write
2285                  * verifier to the buffer.
2286                  */
2287                  bp->b_ops = &xfs_inode_buf_ops;
2288
2289                 /*
2290                  * Walk the inodes already attached to the buffer and mark them
2291                  * stale. These will all have the flush locks held, so an
2292                  * in-memory inode walk can't lock them. By marking them all
2293                  * stale first, we will not attempt to lock them in the loop
2294                  * below as the XFS_ISTALE flag will be set.
2295                  */
2296                 list_for_each_entry(lip, &bp->b_li_list, li_bio_list) {
2297                         if (lip->li_type == XFS_LI_INODE) {
2298                                 iip = (xfs_inode_log_item_t *)lip;
2299                                 ASSERT(iip->ili_logged == 1);
2300                                 lip->li_cb = xfs_istale_done;
2301                                 xfs_trans_ail_copy_lsn(mp->m_ail,
2302                                                         &iip->ili_flush_lsn,
2303                                                         &iip->ili_item.li_lsn);
2304                                 xfs_iflags_set(iip->ili_inode, XFS_ISTALE);
2305                         }
2306                 }
2307
2308
2309                 /*
2310                  * For each inode in memory attempt to add it to the inode
2311                  * buffer and set it up for being staled on buffer IO
2312                  * completion.  This is safe as we've locked out tail pushing
2313                  * and flushing by locking the buffer.
2314                  *
2315                  * We have already marked every inode that was part of a
2316                  * transaction stale above, which means there is no point in
2317                  * even trying to lock them.
2318                  */
2319                 for (i = 0; i < inodes_per_cluster; i++) {
2320 retry:
2321                         rcu_read_lock();
2322                         ip = radix_tree_lookup(&pag->pag_ici_root,
2323                                         XFS_INO_TO_AGINO(mp, (inum + i)));
2324
2325                         /* Inode not in memory, nothing to do */
2326                         if (!ip) {
2327                                 rcu_read_unlock();
2328                                 continue;
2329                         }
2330
2331                         /*
2332                          * because this is an RCU protected lookup, we could
2333                          * find a recently freed or even reallocated inode
2334                          * during the lookup. We need to check under the
2335                          * i_flags_lock for a valid inode here. Skip it if it
2336                          * is not valid, the wrong inode or stale.
2337                          */
2338                         spin_lock(&ip->i_flags_lock);
2339                         if (ip->i_ino != inum + i ||
2340                             __xfs_iflags_test(ip, XFS_ISTALE)) {
2341                                 spin_unlock(&ip->i_flags_lock);
2342                                 rcu_read_unlock();
2343                                 continue;
2344                         }
2345                         spin_unlock(&ip->i_flags_lock);
2346
2347                         /*
2348                          * Don't try to lock/unlock the current inode, but we
2349                          * _cannot_ skip the other inodes that we did not find
2350                          * in the list attached to the buffer and are not
2351                          * already marked stale. If we can't lock it, back off
2352                          * and retry.
2353                          */
2354                         if (ip != free_ip) {
2355                                 if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) {
2356                                         rcu_read_unlock();
2357                                         delay(1);
2358                                         goto retry;
2359                                 }
2360
2361                                 /*
2362                                  * Check the inode number again in case we're
2363                                  * racing with freeing in xfs_reclaim_inode().
2364                                  * See the comments in that function for more
2365                                  * information as to why the initial check is
2366                                  * not sufficient.
2367                                  */
2368                                 if (ip->i_ino != inum + i) {
2369                                         xfs_iunlock(ip, XFS_ILOCK_EXCL);
2370                                         rcu_read_unlock();
2371                                         continue;
2372                                 }
2373                         }
2374                         rcu_read_unlock();
2375
2376                         xfs_iflock(ip);
2377                         xfs_iflags_set(ip, XFS_ISTALE);
2378
2379                         /*
2380                          * we don't need to attach clean inodes or those only
2381                          * with unlogged changes (which we throw away, anyway).
2382                          */
2383                         iip = ip->i_itemp;
2384                         if (!iip || xfs_inode_clean(ip)) {
2385                                 ASSERT(ip != free_ip);
2386                                 xfs_ifunlock(ip);
2387                                 xfs_iunlock(ip, XFS_ILOCK_EXCL);
2388                                 continue;
2389                         }
2390
2391                         iip->ili_last_fields = iip->ili_fields;
2392                         iip->ili_fields = 0;
2393                         iip->ili_fsync_fields = 0;
2394                         iip->ili_logged = 1;
2395                         xfs_trans_ail_copy_lsn(mp->m_ail, &iip->ili_flush_lsn,
2396                                                 &iip->ili_item.li_lsn);
2397
2398                         xfs_buf_attach_iodone(bp, xfs_istale_done,
2399                                                   &iip->ili_item);
2400
2401                         if (ip != free_ip)
2402                                 xfs_iunlock(ip, XFS_ILOCK_EXCL);
2403                 }
2404
2405                 xfs_trans_stale_inode_buf(tp, bp);
2406                 xfs_trans_binval(tp, bp);
2407         }
2408
2409         xfs_perag_put(pag);
2410         return 0;
2411 }
2412
2413 /*
2414  * Free any local-format buffers sitting around before we reset to
2415  * extents format.
2416  */
2417 static inline void
2418 xfs_ifree_local_data(
2419         struct xfs_inode        *ip,
2420         int                     whichfork)
2421 {
2422         struct xfs_ifork        *ifp;
2423
2424         if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL)
2425                 return;
2426
2427         ifp = XFS_IFORK_PTR(ip, whichfork);
2428         xfs_idata_realloc(ip, -ifp->if_bytes, whichfork);
2429 }
2430
2431 /*
2432  * This is called to return an inode to the inode free list.
2433  * The inode should already be truncated to 0 length and have
2434  * no pages associated with it.  This routine also assumes that
2435  * the inode is already a part of the transaction.
2436  *
2437  * The on-disk copy of the inode will have been added to the list
2438  * of unlinked inodes in the AGI. We need to remove the inode from
2439  * that list atomically with respect to freeing it here.
2440  */
2441 int
2442 xfs_ifree(
2443         xfs_trans_t     *tp,
2444         xfs_inode_t     *ip,
2445         struct xfs_defer_ops    *dfops)
2446 {
2447         int                     error;
2448         struct xfs_icluster     xic = { 0 };
2449
2450         ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
2451         ASSERT(VFS_I(ip)->i_nlink == 0);
2452         ASSERT(ip->i_d.di_nextents == 0);
2453         ASSERT(ip->i_d.di_anextents == 0);
2454         ASSERT(ip->i_d.di_size == 0 || !S_ISREG(VFS_I(ip)->i_mode));
2455         ASSERT(ip->i_d.di_nblocks == 0);
2456
2457         /*
2458          * Pull the on-disk inode from the AGI unlinked list.
2459          */
2460         error = xfs_iunlink_remove(tp, ip);
2461         if (error)
2462                 return error;
2463
2464         error = xfs_difree(tp, ip->i_ino, dfops, &xic);
2465         if (error)
2466                 return error;
2467
2468         xfs_ifree_local_data(ip, XFS_DATA_FORK);
2469         xfs_ifree_local_data(ip, XFS_ATTR_FORK);
2470
2471         VFS_I(ip)->i_mode = 0;          /* mark incore inode as free */
2472         ip->i_d.di_flags = 0;
2473         ip->i_d.di_flags2 = 0;
2474         ip->i_d.di_dmevmask = 0;
2475         ip->i_d.di_forkoff = 0;         /* mark the attr fork not in use */
2476         ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
2477         ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS;
2478
2479         /* Don't attempt to replay owner changes for a deleted inode */
2480         ip->i_itemp->ili_fields &= ~(XFS_ILOG_AOWNER|XFS_ILOG_DOWNER);
2481
2482         /*
2483          * Bump the generation count so no one will be confused
2484          * by reincarnations of this inode.
2485          */
2486         VFS_I(ip)->i_generation++;
2487         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
2488
2489         if (xic.deleted)
2490                 error = xfs_ifree_cluster(ip, tp, &xic);
2491
2492         return error;
2493 }
2494
2495 /*
2496  * This is called to unpin an inode.  The caller must have the inode locked
2497  * in at least shared mode so that the buffer cannot be subsequently pinned
2498  * once someone is waiting for it to be unpinned.
2499  */
2500 static void
2501 xfs_iunpin(
2502         struct xfs_inode        *ip)
2503 {
2504         ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED));
2505
2506         trace_xfs_inode_unpin_nowait(ip, _RET_IP_);
2507
2508         /* Give the log a push to start the unpinning I/O */
2509         xfs_log_force_lsn(ip->i_mount, ip->i_itemp->ili_last_lsn, 0, NULL);
2510
2511 }
2512
2513 static void
2514 __xfs_iunpin_wait(
2515         struct xfs_inode        *ip)
2516 {
2517         wait_queue_head_t *wq = bit_waitqueue(&ip->i_flags, __XFS_IPINNED_BIT);
2518         DEFINE_WAIT_BIT(wait, &ip->i_flags, __XFS_IPINNED_BIT);
2519
2520         xfs_iunpin(ip);
2521
2522         do {
2523                 prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE);
2524                 if (xfs_ipincount(ip))
2525                         io_schedule();
2526         } while (xfs_ipincount(ip));
2527         finish_wait(wq, &wait.wq_entry);
2528 }
2529
2530 void
2531 xfs_iunpin_wait(
2532         struct xfs_inode        *ip)
2533 {
2534         if (xfs_ipincount(ip))
2535                 __xfs_iunpin_wait(ip);
2536 }
2537
2538 /*
2539  * Removing an inode from the namespace involves removing the directory entry
2540  * and dropping the link count on the inode. Removing the directory entry can
2541  * result in locking an AGF (directory blocks were freed) and removing a link
2542  * count can result in placing the inode on an unlinked list which results in
2543  * locking an AGI.
2544  *
2545  * The big problem here is that we have an ordering constraint on AGF and AGI
2546  * locking - inode allocation locks the AGI, then can allocate a new extent for
2547  * new inodes, locking the AGF after the AGI. Similarly, freeing the inode
2548  * removes the inode from the unlinked list, requiring that we lock the AGI
2549  * first, and then freeing the inode can result in an inode chunk being freed
2550  * and hence freeing disk space requiring that we lock an AGF.
2551  *
2552  * Hence the ordering that is imposed by other parts of the code is AGI before
2553  * AGF. This means we cannot remove the directory entry before we drop the inode
2554  * reference count and put it on the unlinked list as this results in a lock
2555  * order of AGF then AGI, and this can deadlock against inode allocation and
2556  * freeing. Therefore we must drop the link counts before we remove the
2557  * directory entry.
2558  *
2559  * This is still safe from a transactional point of view - it is not until we
2560  * get to xfs_defer_finish() that we have the possibility of multiple
2561  * transactions in this operation. Hence as long as we remove the directory
2562  * entry and drop the link count in the first transaction of the remove
2563  * operation, there are no transactional constraints on the ordering here.
2564  */
2565 int
2566 xfs_remove(
2567         xfs_inode_t             *dp,
2568         struct xfs_name         *name,
2569         xfs_inode_t             *ip)
2570 {
2571         xfs_mount_t             *mp = dp->i_mount;
2572         xfs_trans_t             *tp = NULL;
2573         int                     is_dir = S_ISDIR(VFS_I(ip)->i_mode);
2574         int                     error = 0;
2575         struct xfs_defer_ops    dfops;
2576         xfs_fsblock_t           first_block;
2577         uint                    resblks;
2578
2579         trace_xfs_remove(dp, name);
2580
2581         if (XFS_FORCED_SHUTDOWN(mp))
2582                 return -EIO;
2583
2584         error = xfs_qm_dqattach(dp, 0);
2585         if (error)
2586                 goto std_return;
2587
2588         error = xfs_qm_dqattach(ip, 0);
2589         if (error)
2590                 goto std_return;
2591
2592         /*
2593          * We try to get the real space reservation first,
2594          * allowing for directory btree deletion(s) implying
2595          * possible bmap insert(s).  If we can't get the space
2596          * reservation then we use 0 instead, and avoid the bmap
2597          * btree insert(s) in the directory code by, if the bmap
2598          * insert tries to happen, instead trimming the LAST
2599          * block from the directory.
2600          */
2601         resblks = XFS_REMOVE_SPACE_RES(mp);
2602         error = xfs_trans_alloc(mp, &M_RES(mp)->tr_remove, resblks, 0, 0, &tp);
2603         if (error == -ENOSPC) {
2604                 resblks = 0;
2605                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_remove, 0, 0, 0,
2606                                 &tp);
2607         }
2608         if (error) {
2609                 ASSERT(error != -ENOSPC);
2610                 goto std_return;
2611         }
2612
2613         xfs_lock_two_inodes(dp, XFS_ILOCK_EXCL, ip, XFS_ILOCK_EXCL);
2614
2615         xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
2616         xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
2617
2618         /*
2619          * If we're removing a directory perform some additional validation.
2620          */
2621         if (is_dir) {
2622                 ASSERT(VFS_I(ip)->i_nlink >= 2);
2623                 if (VFS_I(ip)->i_nlink != 2) {
2624                         error = -ENOTEMPTY;
2625                         goto out_trans_cancel;
2626                 }
2627                 if (!xfs_dir_isempty(ip)) {
2628                         error = -ENOTEMPTY;
2629                         goto out_trans_cancel;
2630                 }
2631
2632                 /* Drop the link from ip's "..".  */
2633                 error = xfs_droplink(tp, dp);
2634                 if (error)
2635                         goto out_trans_cancel;
2636
2637                 /* Drop the "." link from ip to self.  */
2638                 error = xfs_droplink(tp, ip);
2639                 if (error)
2640                         goto out_trans_cancel;
2641         } else {
2642                 /*
2643                  * When removing a non-directory we need to log the parent
2644                  * inode here.  For a directory this is done implicitly
2645                  * by the xfs_droplink call for the ".." entry.
2646                  */
2647                 xfs_trans_log_inode(tp, dp, XFS_ILOG_CORE);
2648         }
2649         xfs_trans_ichgtime(tp, dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
2650
2651         /* Drop the link from dp to ip. */
2652         error = xfs_droplink(tp, ip);
2653         if (error)
2654                 goto out_trans_cancel;
2655
2656         xfs_defer_init(&dfops, &first_block);
2657         error = xfs_dir_removename(tp, dp, name, ip->i_ino,
2658                                         &first_block, &dfops, resblks);
2659         if (error) {
2660                 ASSERT(error != -ENOENT);
2661                 goto out_bmap_cancel;
2662         }
2663
2664         /*
2665          * If this is a synchronous mount, make sure that the
2666          * remove transaction goes to disk before returning to
2667          * the user.
2668          */
2669         if (mp->m_flags & (XFS_MOUNT_WSYNC|XFS_MOUNT_DIRSYNC))
2670                 xfs_trans_set_sync(tp);
2671
2672         error = xfs_defer_finish(&tp, &dfops);
2673         if (error)
2674                 goto out_bmap_cancel;
2675
2676         error = xfs_trans_commit(tp);
2677         if (error)
2678                 goto std_return;
2679
2680         if (is_dir && xfs_inode_is_filestream(ip))
2681                 xfs_filestream_deassociate(ip);
2682
2683         return 0;
2684
2685  out_bmap_cancel:
2686         xfs_defer_cancel(&dfops);
2687  out_trans_cancel:
2688         xfs_trans_cancel(tp);
2689  std_return:
2690         return error;
2691 }
2692
2693 /*
2694  * Enter all inodes for a rename transaction into a sorted array.
2695  */
2696 #define __XFS_SORT_INODES       5
2697 STATIC void
2698 xfs_sort_for_rename(
2699         struct xfs_inode        *dp1,   /* in: old (source) directory inode */
2700         struct xfs_inode        *dp2,   /* in: new (target) directory inode */
2701         struct xfs_inode        *ip1,   /* in: inode of old entry */
2702         struct xfs_inode        *ip2,   /* in: inode of new entry */
2703         struct xfs_inode        *wip,   /* in: whiteout inode */
2704         struct xfs_inode        **i_tab,/* out: sorted array of inodes */
2705         int                     *num_inodes)  /* in/out: inodes in array */
2706 {
2707         int                     i, j;
2708
2709         ASSERT(*num_inodes == __XFS_SORT_INODES);
2710         memset(i_tab, 0, *num_inodes * sizeof(struct xfs_inode *));
2711
2712         /*
2713          * i_tab contains a list of pointers to inodes.  We initialize
2714          * the table here & we'll sort it.  We will then use it to
2715          * order the acquisition of the inode locks.
2716          *
2717          * Note that the table may contain duplicates.  e.g., dp1 == dp2.
2718          */
2719         i = 0;
2720         i_tab[i++] = dp1;
2721         i_tab[i++] = dp2;
2722         i_tab[i++] = ip1;
2723         if (ip2)
2724                 i_tab[i++] = ip2;
2725         if (wip)
2726                 i_tab[i++] = wip;
2727         *num_inodes = i;
2728
2729         /*
2730          * Sort the elements via bubble sort.  (Remember, there are at
2731          * most 5 elements to sort, so this is adequate.)
2732          */
2733         for (i = 0; i < *num_inodes; i++) {
2734                 for (j = 1; j < *num_inodes; j++) {
2735                         if (i_tab[j]->i_ino < i_tab[j-1]->i_ino) {
2736                                 struct xfs_inode *temp = i_tab[j];
2737                                 i_tab[j] = i_tab[j-1];
2738                                 i_tab[j-1] = temp;
2739                         }
2740                 }
2741         }
2742 }
2743
2744 static int
2745 xfs_finish_rename(
2746         struct xfs_trans        *tp,
2747         struct xfs_defer_ops    *dfops)
2748 {
2749         int                     error;
2750
2751         /*
2752          * If this is a synchronous mount, make sure that the rename transaction
2753          * goes to disk before returning to the user.
2754          */
2755         if (tp->t_mountp->m_flags & (XFS_MOUNT_WSYNC|XFS_MOUNT_DIRSYNC))
2756                 xfs_trans_set_sync(tp);
2757
2758         error = xfs_defer_finish(&tp, dfops);
2759         if (error) {
2760                 xfs_defer_cancel(dfops);
2761                 xfs_trans_cancel(tp);
2762                 return error;
2763         }
2764
2765         return xfs_trans_commit(tp);
2766 }
2767
2768 /*
2769  * xfs_cross_rename()
2770  *
2771  * responsible for handling RENAME_EXCHANGE flag in renameat2() sytemcall
2772  */
2773 STATIC int
2774 xfs_cross_rename(
2775         struct xfs_trans        *tp,
2776         struct xfs_inode        *dp1,
2777         struct xfs_name         *name1,
2778         struct xfs_inode        *ip1,
2779         struct xfs_inode        *dp2,
2780         struct xfs_name         *name2,
2781         struct xfs_inode        *ip2,
2782         struct xfs_defer_ops    *dfops,
2783         xfs_fsblock_t           *first_block,
2784         int                     spaceres)
2785 {
2786         int             error = 0;
2787         int             ip1_flags = 0;
2788         int             ip2_flags = 0;
2789         int             dp2_flags = 0;
2790
2791         /* Swap inode number for dirent in first parent */
2792         error = xfs_dir_replace(tp, dp1, name1,
2793                                 ip2->i_ino,
2794                                 first_block, dfops, spaceres);
2795         if (error)
2796                 goto out_trans_abort;
2797
2798         /* Swap inode number for dirent in second parent */
2799         error = xfs_dir_replace(tp, dp2, name2,
2800                                 ip1->i_ino,
2801                                 first_block, dfops, spaceres);
2802         if (error)
2803                 goto out_trans_abort;
2804
2805         /*
2806          * If we're renaming one or more directories across different parents,
2807          * update the respective ".." entries (and link counts) to match the new
2808          * parents.
2809          */
2810         if (dp1 != dp2) {
2811                 dp2_flags = XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
2812
2813                 if (S_ISDIR(VFS_I(ip2)->i_mode)) {
2814                         error = xfs_dir_replace(tp, ip2, &xfs_name_dotdot,
2815                                                 dp1->i_ino, first_block,
2816                                                 dfops, spaceres);
2817                         if (error)
2818                                 goto out_trans_abort;
2819
2820                         /* transfer ip2 ".." reference to dp1 */
2821                         if (!S_ISDIR(VFS_I(ip1)->i_mode)) {
2822                                 error = xfs_droplink(tp, dp2);
2823                                 if (error)
2824                                         goto out_trans_abort;
2825                                 error = xfs_bumplink(tp, dp1);
2826                                 if (error)
2827                                         goto out_trans_abort;
2828                         }
2829
2830                         /*
2831                          * Although ip1 isn't changed here, userspace needs
2832                          * to be warned about the change, so that applications
2833                          * relying on it (like backup ones), will properly
2834                          * notify the change
2835                          */
2836                         ip1_flags |= XFS_ICHGTIME_CHG;
2837                         ip2_flags |= XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
2838                 }
2839
2840                 if (S_ISDIR(VFS_I(ip1)->i_mode)) {
2841                         error = xfs_dir_replace(tp, ip1, &xfs_name_dotdot,
2842                                                 dp2->i_ino, first_block,
2843                                                 dfops, spaceres);
2844                         if (error)
2845                                 goto out_trans_abort;
2846
2847                         /* transfer ip1 ".." reference to dp2 */
2848                         if (!S_ISDIR(VFS_I(ip2)->i_mode)) {
2849                                 error = xfs_droplink(tp, dp1);
2850                                 if (error)
2851                                         goto out_trans_abort;
2852                                 error = xfs_bumplink(tp, dp2);
2853                                 if (error)
2854                                         goto out_trans_abort;
2855                         }
2856
2857                         /*
2858                          * Although ip2 isn't changed here, userspace needs
2859                          * to be warned about the change, so that applications
2860                          * relying on it (like backup ones), will properly
2861                          * notify the change
2862                          */
2863                         ip1_flags |= XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
2864                         ip2_flags |= XFS_ICHGTIME_CHG;
2865                 }
2866         }
2867
2868         if (ip1_flags) {
2869                 xfs_trans_ichgtime(tp, ip1, ip1_flags);
2870                 xfs_trans_log_inode(tp, ip1, XFS_ILOG_CORE);
2871         }
2872         if (ip2_flags) {
2873                 xfs_trans_ichgtime(tp, ip2, ip2_flags);
2874                 xfs_trans_log_inode(tp, ip2, XFS_ILOG_CORE);
2875         }
2876         if (dp2_flags) {
2877                 xfs_trans_ichgtime(tp, dp2, dp2_flags);
2878                 xfs_trans_log_inode(tp, dp2, XFS_ILOG_CORE);
2879         }
2880         xfs_trans_ichgtime(tp, dp1, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
2881         xfs_trans_log_inode(tp, dp1, XFS_ILOG_CORE);
2882         return xfs_finish_rename(tp, dfops);
2883
2884 out_trans_abort:
2885         xfs_defer_cancel(dfops);
2886         xfs_trans_cancel(tp);
2887         return error;
2888 }
2889
2890 /*
2891  * xfs_rename_alloc_whiteout()
2892  *
2893  * Return a referenced, unlinked, unlocked inode that that can be used as a
2894  * whiteout in a rename transaction. We use a tmpfile inode here so that if we
2895  * crash between allocating the inode and linking it into the rename transaction
2896  * recovery will free the inode and we won't leak it.
2897  */
2898 static int
2899 xfs_rename_alloc_whiteout(
2900         struct xfs_inode        *dp,
2901         struct xfs_inode        **wip)
2902 {
2903         struct xfs_inode        *tmpfile;
2904         int                     error;
2905
2906         error = xfs_create_tmpfile(dp, NULL, S_IFCHR | WHITEOUT_MODE, &tmpfile);
2907         if (error)
2908                 return error;
2909
2910         /*
2911          * Prepare the tmpfile inode as if it were created through the VFS.
2912          * Otherwise, the link increment paths will complain about nlink 0->1.
2913          * Drop the link count as done by d_tmpfile(), complete the inode setup
2914          * and flag it as linkable.
2915          */
2916         drop_nlink(VFS_I(tmpfile));
2917         xfs_setup_iops(tmpfile);
2918         xfs_finish_inode_setup(tmpfile);
2919         VFS_I(tmpfile)->i_state |= I_LINKABLE;
2920
2921         *wip = tmpfile;
2922         return 0;
2923 }
2924
2925 /*
2926  * xfs_rename
2927  */
2928 int
2929 xfs_rename(
2930         struct xfs_inode        *src_dp,
2931         struct xfs_name         *src_name,
2932         struct xfs_inode        *src_ip,
2933         struct xfs_inode        *target_dp,
2934         struct xfs_name         *target_name,
2935         struct xfs_inode        *target_ip,
2936         unsigned int            flags)
2937 {
2938         struct xfs_mount        *mp = src_dp->i_mount;
2939         struct xfs_trans        *tp;
2940         struct xfs_defer_ops    dfops;
2941         xfs_fsblock_t           first_block;
2942         struct xfs_inode        *wip = NULL;            /* whiteout inode */
2943         struct xfs_inode        *inodes[__XFS_SORT_INODES];
2944         int                     num_inodes = __XFS_SORT_INODES;
2945         bool                    new_parent = (src_dp != target_dp);
2946         bool                    src_is_directory = S_ISDIR(VFS_I(src_ip)->i_mode);
2947         int                     spaceres;
2948         int                     error;
2949
2950         trace_xfs_rename(src_dp, target_dp, src_name, target_name);
2951
2952         if ((flags & RENAME_EXCHANGE) && !target_ip)
2953                 return -EINVAL;
2954
2955         /*
2956          * If we are doing a whiteout operation, allocate the whiteout inode
2957          * we will be placing at the target and ensure the type is set
2958          * appropriately.
2959          */
2960         if (flags & RENAME_WHITEOUT) {
2961                 ASSERT(!(flags & (RENAME_NOREPLACE | RENAME_EXCHANGE)));
2962                 error = xfs_rename_alloc_whiteout(target_dp, &wip);
2963                 if (error)
2964                         return error;
2965
2966                 /* setup target dirent info as whiteout */
2967                 src_name->type = XFS_DIR3_FT_CHRDEV;
2968         }
2969
2970         xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, wip,
2971                                 inodes, &num_inodes);
2972
2973         spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len);
2974         error = xfs_trans_alloc(mp, &M_RES(mp)->tr_rename, spaceres, 0, 0, &tp);
2975         if (error == -ENOSPC) {
2976                 spaceres = 0;
2977                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_rename, 0, 0, 0,
2978                                 &tp);
2979         }
2980         if (error)
2981                 goto out_release_wip;
2982
2983         /*
2984          * Attach the dquots to the inodes
2985          */
2986         error = xfs_qm_vop_rename_dqattach(inodes);
2987         if (error)
2988                 goto out_trans_cancel;
2989
2990         /*
2991          * Lock all the participating inodes. Depending upon whether
2992          * the target_name exists in the target directory, and
2993          * whether the target directory is the same as the source
2994          * directory, we can lock from 2 to 4 inodes.
2995          */
2996         xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL);
2997
2998         /*
2999          * Join all the inodes to the transaction. From this point on,
3000          * we can rely on either trans_commit or trans_cancel to unlock
3001          * them.
3002          */
3003         xfs_trans_ijoin(tp, src_dp, XFS_ILOCK_EXCL);
3004         if (new_parent)
3005                 xfs_trans_ijoin(tp, target_dp, XFS_ILOCK_EXCL);
3006         xfs_trans_ijoin(tp, src_ip, XFS_ILOCK_EXCL);
3007         if (target_ip)
3008                 xfs_trans_ijoin(tp, target_ip, XFS_ILOCK_EXCL);
3009         if (wip)
3010                 xfs_trans_ijoin(tp, wip, XFS_ILOCK_EXCL);
3011
3012         /*
3013          * If we are using project inheritance, we only allow renames
3014          * into our tree when the project IDs are the same; else the
3015          * tree quota mechanism would be circumvented.
3016          */
3017         if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) &&
3018                      (xfs_get_projid(target_dp) != xfs_get_projid(src_ip)))) {
3019                 error = -EXDEV;
3020                 goto out_trans_cancel;
3021         }
3022
3023         xfs_defer_init(&dfops, &first_block);
3024
3025         /* RENAME_EXCHANGE is unique from here on. */
3026         if (flags & RENAME_EXCHANGE)
3027                 return xfs_cross_rename(tp, src_dp, src_name, src_ip,
3028                                         target_dp, target_name, target_ip,
3029                                         &dfops, &first_block, spaceres);
3030
3031         /*
3032          * Set up the target.
3033          */
3034         if (target_ip == NULL) {
3035                 /*
3036                  * If there's no space reservation, check the entry will
3037                  * fit before actually inserting it.
3038                  */
3039                 if (!spaceres) {
3040                         error = xfs_dir_canenter(tp, target_dp, target_name);
3041                         if (error)
3042                                 goto out_trans_cancel;
3043                 }
3044                 /*
3045                  * If target does not exist and the rename crosses
3046                  * directories, adjust the target directory link count
3047                  * to account for the ".." reference from the new entry.
3048                  */
3049                 error = xfs_dir_createname(tp, target_dp, target_name,
3050                                                 src_ip->i_ino, &first_block,
3051                                                 &dfops, spaceres);
3052                 if (error)
3053                         goto out_bmap_cancel;
3054
3055                 xfs_trans_ichgtime(tp, target_dp,
3056                                         XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
3057
3058                 if (new_parent && src_is_directory) {
3059                         error = xfs_bumplink(tp, target_dp);
3060                         if (error)
3061                                 goto out_bmap_cancel;
3062                 }
3063         } else { /* target_ip != NULL */
3064                 /*
3065                  * If target exists and it's a directory, check that both
3066                  * target and source are directories and that target can be
3067                  * destroyed, or that neither is a directory.
3068                  */
3069                 if (S_ISDIR(VFS_I(target_ip)->i_mode)) {
3070                         /*
3071                          * Make sure target dir is empty.
3072                          */
3073                         if (!(xfs_dir_isempty(target_ip)) ||
3074                             (VFS_I(target_ip)->i_nlink > 2)) {
3075                                 error = -EEXIST;
3076                                 goto out_trans_cancel;
3077                         }
3078                 }
3079
3080                 /*
3081                  * Link the source inode under the target name.
3082                  * If the source inode is a directory and we are moving
3083                  * it across directories, its ".." entry will be
3084                  * inconsistent until we replace that down below.
3085                  *
3086                  * In case there is already an entry with the same
3087                  * name at the destination directory, remove it first.
3088                  */
3089                 error = xfs_dir_replace(tp, target_dp, target_name,
3090                                         src_ip->i_ino,
3091                                         &first_block, &dfops, spaceres);
3092                 if (error)
3093                         goto out_bmap_cancel;
3094
3095                 xfs_trans_ichgtime(tp, target_dp,
3096                                         XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
3097
3098                 /*
3099                  * Decrement the link count on the target since the target
3100                  * dir no longer points to it.
3101                  */
3102                 error = xfs_droplink(tp, target_ip);
3103                 if (error)
3104                         goto out_bmap_cancel;
3105
3106                 if (src_is_directory) {
3107                         /*
3108                          * Drop the link from the old "." entry.
3109                          */
3110                         error = xfs_droplink(tp, target_ip);
3111                         if (error)
3112                                 goto out_bmap_cancel;
3113                 }
3114         } /* target_ip != NULL */
3115
3116         /*
3117          * Remove the source.
3118          */
3119         if (new_parent && src_is_directory) {
3120                 /*
3121                  * Rewrite the ".." entry to point to the new
3122                  * directory.
3123                  */
3124                 error = xfs_dir_replace(tp, src_ip, &xfs_name_dotdot,
3125                                         target_dp->i_ino,
3126                                         &first_block, &dfops, spaceres);
3127                 ASSERT(error != -EEXIST);
3128                 if (error)
3129                         goto out_bmap_cancel;
3130         }
3131
3132         /*
3133          * We always want to hit the ctime on the source inode.
3134          *
3135          * This isn't strictly required by the standards since the source
3136          * inode isn't really being changed, but old unix file systems did
3137          * it and some incremental backup programs won't work without it.
3138          */
3139         xfs_trans_ichgtime(tp, src_ip, XFS_ICHGTIME_CHG);
3140         xfs_trans_log_inode(tp, src_ip, XFS_ILOG_CORE);
3141
3142         /*
3143          * Adjust the link count on src_dp.  This is necessary when
3144          * renaming a directory, either within one parent when
3145          * the target existed, or across two parent directories.
3146          */
3147         if (src_is_directory && (new_parent || target_ip != NULL)) {
3148
3149                 /*
3150                  * Decrement link count on src_directory since the
3151                  * entry that's moved no longer points to it.
3152                  */
3153                 error = xfs_droplink(tp, src_dp);
3154                 if (error)
3155                         goto out_bmap_cancel;
3156         }
3157
3158         /*
3159          * For whiteouts, we only need to update the source dirent with the
3160          * inode number of the whiteout inode rather than removing it
3161          * altogether.
3162          */
3163         if (wip) {
3164                 error = xfs_dir_replace(tp, src_dp, src_name, wip->i_ino,
3165                                         &first_block, &dfops, spaceres);
3166         } else
3167                 error = xfs_dir_removename(tp, src_dp, src_name, src_ip->i_ino,
3168                                            &first_block, &dfops, spaceres);
3169         if (error)
3170                 goto out_bmap_cancel;
3171
3172         /*
3173          * For whiteouts, we need to bump the link count on the whiteout inode.
3174          * This means that failures all the way up to this point leave the inode
3175          * on the unlinked list and so cleanup is a simple matter of dropping
3176          * the remaining reference to it. If we fail here after bumping the link
3177          * count, we're shutting down the filesystem so we'll never see the
3178          * intermediate state on disk.
3179          */
3180         if (wip) {
3181                 ASSERT(VFS_I(wip)->i_nlink == 0);
3182                 error = xfs_bumplink(tp, wip);
3183                 if (error)
3184                         goto out_bmap_cancel;
3185                 error = xfs_iunlink_remove(tp, wip);
3186                 if (error)
3187                         goto out_bmap_cancel;
3188                 xfs_trans_log_inode(tp, wip, XFS_ILOG_CORE);
3189
3190                 /*
3191                  * Now we have a real link, clear the "I'm a tmpfile" state
3192                  * flag from the inode so it doesn't accidentally get misused in
3193                  * future.
3194                  */
3195                 VFS_I(wip)->i_state &= ~I_LINKABLE;
3196         }
3197
3198         xfs_trans_ichgtime(tp, src_dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
3199         xfs_trans_log_inode(tp, src_dp, XFS_ILOG_CORE);
3200         if (new_parent)
3201                 xfs_trans_log_inode(tp, target_dp, XFS_ILOG_CORE);
3202
3203         error = xfs_finish_rename(tp, &dfops);
3204         if (wip)
3205                 IRELE(wip);
3206         return error;
3207
3208 out_bmap_cancel:
3209         xfs_defer_cancel(&dfops);
3210 out_trans_cancel:
3211         xfs_trans_cancel(tp);
3212 out_release_wip:
3213         if (wip)
3214                 IRELE(wip);
3215         return error;
3216 }
3217
3218 STATIC int
3219 xfs_iflush_cluster(
3220         struct xfs_inode        *ip,
3221         struct xfs_buf          *bp)
3222 {
3223         struct xfs_mount        *mp = ip->i_mount;
3224         struct xfs_perag        *pag;
3225         unsigned long           first_index, mask;
3226         unsigned long           inodes_per_cluster;
3227         int                     cilist_size;
3228         struct xfs_inode        **cilist;
3229         struct xfs_inode        *cip;
3230         int                     nr_found;
3231         int                     clcount = 0;
3232         int                     bufwasdelwri;
3233         int                     i;
3234
3235         pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
3236
3237         inodes_per_cluster = mp->m_inode_cluster_size >> mp->m_sb.sb_inodelog;
3238         cilist_size = inodes_per_cluster * sizeof(xfs_inode_t *);
3239         cilist = kmem_alloc(cilist_size, KM_MAYFAIL|KM_NOFS);
3240         if (!cilist)
3241                 goto out_put;
3242
3243         mask = ~(((mp->m_inode_cluster_size >> mp->m_sb.sb_inodelog)) - 1);
3244         first_index = XFS_INO_TO_AGINO(mp, ip->i_ino) & mask;
3245         rcu_read_lock();
3246         /* really need a gang lookup range call here */
3247         nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void**)cilist,
3248                                         first_index, inodes_per_cluster);
3249         if (nr_found == 0)
3250                 goto out_free;
3251
3252         for (i = 0; i < nr_found; i++) {
3253                 cip = cilist[i];
3254                 if (cip == ip)
3255                         continue;
3256
3257                 /*
3258                  * because this is an RCU protected lookup, we could find a
3259                  * recently freed or even reallocated inode during the lookup.
3260                  * We need to check under the i_flags_lock for a valid inode
3261                  * here. Skip it if it is not valid or the wrong inode.
3262                  */
3263                 spin_lock(&cip->i_flags_lock);
3264                 if (!cip->i_ino ||
3265                     __xfs_iflags_test(cip, XFS_ISTALE)) {
3266                         spin_unlock(&cip->i_flags_lock);
3267                         continue;
3268                 }
3269
3270                 /*
3271                  * Once we fall off the end of the cluster, no point checking
3272                  * any more inodes in the list because they will also all be
3273                  * outside the cluster.
3274                  */
3275                 if ((XFS_INO_TO_AGINO(mp, cip->i_ino) & mask) != first_index) {
3276                         spin_unlock(&cip->i_flags_lock);
3277                         break;
3278                 }
3279                 spin_unlock(&cip->i_flags_lock);
3280
3281                 /*
3282                  * Do an un-protected check to see if the inode is dirty and
3283                  * is a candidate for flushing.  These checks will be repeated
3284                  * later after the appropriate locks are acquired.
3285                  */
3286                 if (xfs_inode_clean(cip) && xfs_ipincount(cip) == 0)
3287                         continue;
3288
3289                 /*
3290                  * Try to get locks.  If any are unavailable or it is pinned,
3291                  * then this inode cannot be flushed and is skipped.
3292                  */
3293
3294                 if (!xfs_ilock_nowait(cip, XFS_ILOCK_SHARED))
3295                         continue;
3296                 if (!xfs_iflock_nowait(cip)) {
3297                         xfs_iunlock(cip, XFS_ILOCK_SHARED);
3298                         continue;
3299                 }
3300                 if (xfs_ipincount(cip)) {
3301                         xfs_ifunlock(cip);
3302                         xfs_iunlock(cip, XFS_ILOCK_SHARED);
3303                         continue;
3304                 }
3305
3306
3307                 /*
3308                  * Check the inode number again, just to be certain we are not
3309                  * racing with freeing in xfs_reclaim_inode(). See the comments
3310                  * in that function for more information as to why the initial
3311                  * check is not sufficient.
3312                  */
3313                 if (!cip->i_ino) {
3314                         xfs_ifunlock(cip);
3315                         xfs_iunlock(cip, XFS_ILOCK_SHARED);
3316                         continue;
3317                 }
3318
3319                 /*
3320                  * arriving here means that this inode can be flushed.  First
3321                  * re-check that it's dirty before flushing.
3322                  */
3323                 if (!xfs_inode_clean(cip)) {
3324                         int     error;
3325                         error = xfs_iflush_int(cip, bp);
3326                         if (error) {
3327                                 xfs_iunlock(cip, XFS_ILOCK_SHARED);
3328                                 goto cluster_corrupt_out;
3329                         }
3330                         clcount++;
3331                 } else {
3332                         xfs_ifunlock(cip);
3333                 }
3334                 xfs_iunlock(cip, XFS_ILOCK_SHARED);
3335         }
3336
3337         if (clcount) {
3338                 XFS_STATS_INC(mp, xs_icluster_flushcnt);
3339                 XFS_STATS_ADD(mp, xs_icluster_flushinode, clcount);
3340         }
3341
3342 out_free:
3343         rcu_read_unlock();
3344         kmem_free(cilist);
3345 out_put:
3346         xfs_perag_put(pag);
3347         return 0;
3348
3349
3350 cluster_corrupt_out:
3351         /*
3352          * Corruption detected in the clustering loop.  Invalidate the
3353          * inode buffer and shut down the filesystem.
3354          */
3355         rcu_read_unlock();
3356         /*
3357          * Clean up the buffer.  If it was delwri, just release it --
3358          * brelse can handle it with no problems.  If not, shut down the
3359          * filesystem before releasing the buffer.
3360          */
3361         bufwasdelwri = (bp->b_flags & _XBF_DELWRI_Q);
3362         if (bufwasdelwri)
3363                 xfs_buf_relse(bp);
3364
3365         xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
3366
3367         if (!bufwasdelwri) {
3368                 /*
3369                  * Just like incore_relse: if we have b_iodone functions,
3370                  * mark the buffer as an error and call them.  Otherwise
3371                  * mark it as stale and brelse.
3372                  */
3373                 if (bp->b_iodone) {
3374                         bp->b_flags &= ~XBF_DONE;
3375                         xfs_buf_stale(bp);
3376                         xfs_buf_ioerror(bp, -EIO);
3377                         xfs_buf_ioend(bp);
3378                 } else {
3379                         xfs_buf_stale(bp);
3380                         xfs_buf_relse(bp);
3381                 }
3382         }
3383
3384         /*
3385          * Unlocks the flush lock
3386          */
3387         xfs_iflush_abort(cip, false);
3388         kmem_free(cilist);
3389         xfs_perag_put(pag);
3390         return -EFSCORRUPTED;
3391 }
3392
3393 /*
3394  * Flush dirty inode metadata into the backing buffer.
3395  *
3396  * The caller must have the inode lock and the inode flush lock held.  The
3397  * inode lock will still be held upon return to the caller, and the inode
3398  * flush lock will be released after the inode has reached the disk.
3399  *
3400  * The caller must write out the buffer returned in *bpp and release it.
3401  */
3402 int
3403 xfs_iflush(
3404         struct xfs_inode        *ip,
3405         struct xfs_buf          **bpp)
3406 {
3407         struct xfs_mount        *mp = ip->i_mount;
3408         struct xfs_buf          *bp = NULL;
3409         struct xfs_dinode       *dip;
3410         int                     error;
3411
3412         XFS_STATS_INC(mp, xs_iflush_count);
3413
3414         ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED));
3415         ASSERT(xfs_isiflocked(ip));
3416         ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
3417                ip->i_d.di_nextents > XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK));
3418
3419         *bpp = NULL;
3420
3421         xfs_iunpin_wait(ip);
3422
3423         /*
3424          * For stale inodes we cannot rely on the backing buffer remaining
3425          * stale in cache for the remaining life of the stale inode and so
3426          * xfs_imap_to_bp() below may give us a buffer that no longer contains
3427          * inodes below. We have to check this after ensuring the inode is
3428          * unpinned so that it is safe to reclaim the stale inode after the
3429          * flush call.
3430          */
3431         if (xfs_iflags_test(ip, XFS_ISTALE)) {
3432                 xfs_ifunlock(ip);
3433                 return 0;
3434         }
3435
3436         /*
3437          * This may have been unpinned because the filesystem is shutting
3438          * down forcibly. If that's the case we must not write this inode
3439          * to disk, because the log record didn't make it to disk.
3440          *
3441          * We also have to remove the log item from the AIL in this case,
3442          * as we wait for an empty AIL as part of the unmount process.
3443          */
3444         if (XFS_FORCED_SHUTDOWN(mp)) {
3445                 error = -EIO;
3446                 goto abort_out;
3447         }
3448
3449         /*
3450          * Get the buffer containing the on-disk inode. We are doing a try-lock
3451          * operation here, so we may get  an EAGAIN error. In that case, we
3452          * simply want to return with the inode still dirty.
3453          *
3454          * If we get any other error, we effectively have a corruption situation
3455          * and we cannot flush the inode, so we treat it the same as failing
3456          * xfs_iflush_int().
3457          */
3458         error = xfs_imap_to_bp(mp, NULL, &ip->i_imap, &dip, &bp, XBF_TRYLOCK,
3459                                0);
3460         if (error == -EAGAIN) {
3461                 xfs_ifunlock(ip);
3462                 return error;
3463         }
3464         if (error)
3465                 goto corrupt_out;
3466
3467         /*
3468          * First flush out the inode that xfs_iflush was called with.
3469          */
3470         error = xfs_iflush_int(ip, bp);
3471         if (error)
3472                 goto corrupt_out;
3473
3474         /*
3475          * If the buffer is pinned then push on the log now so we won't
3476          * get stuck waiting in the write for too long.
3477          */
3478         if (xfs_buf_ispinned(bp))
3479                 xfs_log_force(mp, 0);
3480
3481         /*
3482          * inode clustering:
3483          * see if other inodes can be gathered into this write
3484          */
3485         error = xfs_iflush_cluster(ip, bp);
3486         if (error)
3487                 goto cluster_corrupt_out;
3488
3489         *bpp = bp;
3490         return 0;
3491
3492 corrupt_out:
3493         if (bp)
3494                 xfs_buf_relse(bp);
3495         xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
3496 cluster_corrupt_out:
3497         error = -EFSCORRUPTED;
3498 abort_out:
3499         /*
3500          * Unlocks the flush lock
3501          */
3502         xfs_iflush_abort(ip, false);
3503         return error;
3504 }
3505
3506 /*
3507  * If there are inline format data / attr forks attached to this inode,
3508  * make sure they're not corrupt.
3509  */
3510 bool
3511 xfs_inode_verify_forks(
3512         struct xfs_inode        *ip)
3513 {
3514         struct xfs_ifork        *ifp;
3515         xfs_failaddr_t          fa;
3516
3517         fa = xfs_ifork_verify_data(ip, &xfs_default_ifork_ops);
3518         if (fa) {
3519                 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
3520                 xfs_inode_verifier_error(ip, -EFSCORRUPTED, "data fork",
3521                                 ifp->if_u1.if_data, ifp->if_bytes, fa);
3522                 return false;
3523         }
3524
3525         fa = xfs_ifork_verify_attr(ip, &xfs_default_ifork_ops);
3526         if (fa) {
3527                 ifp = XFS_IFORK_PTR(ip, XFS_ATTR_FORK);
3528                 xfs_inode_verifier_error(ip, -EFSCORRUPTED, "attr fork",
3529                                 ifp ? ifp->if_u1.if_data : NULL,
3530                                 ifp ? ifp->if_bytes : 0, fa);
3531                 return false;
3532         }
3533         return true;
3534 }
3535
3536 STATIC int
3537 xfs_iflush_int(
3538         struct xfs_inode        *ip,
3539         struct xfs_buf          *bp)
3540 {
3541         struct xfs_inode_log_item *iip = ip->i_itemp;
3542         struct xfs_dinode       *dip;
3543         struct xfs_mount        *mp = ip->i_mount;
3544
3545         ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED));
3546         ASSERT(xfs_isiflocked(ip));
3547         ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
3548                ip->i_d.di_nextents > XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK));
3549         ASSERT(iip != NULL && iip->ili_fields != 0);
3550         ASSERT(ip->i_d.di_version > 1);
3551
3552         /* set *dip = inode's place in the buffer */
3553         dip = xfs_buf_offset(bp, ip->i_imap.im_boffset);
3554
3555         if (XFS_TEST_ERROR(dip->di_magic != cpu_to_be16(XFS_DINODE_MAGIC),
3556                                mp, XFS_ERRTAG_IFLUSH_1)) {
3557                 xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
3558                         "%s: Bad inode %Lu magic number 0x%x, ptr "PTR_FMT,
3559                         __func__, ip->i_ino, be16_to_cpu(dip->di_magic), dip);
3560                 goto corrupt_out;
3561         }
3562         if (S_ISREG(VFS_I(ip)->i_mode)) {
3563                 if (XFS_TEST_ERROR(
3564                     (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) &&
3565                     (ip->i_d.di_format != XFS_DINODE_FMT_BTREE),
3566                     mp, XFS_ERRTAG_IFLUSH_3)) {
3567                         xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
3568                                 "%s: Bad regular inode %Lu, ptr "PTR_FMT,
3569                                 __func__, ip->i_ino, ip);
3570                         goto corrupt_out;
3571                 }
3572         } else if (S_ISDIR(VFS_I(ip)->i_mode)) {
3573                 if (XFS_TEST_ERROR(
3574                     (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) &&
3575                     (ip->i_d.di_format != XFS_DINODE_FMT_BTREE) &&
3576                     (ip->i_d.di_format != XFS_DINODE_FMT_LOCAL),
3577                     mp, XFS_ERRTAG_IFLUSH_4)) {
3578                         xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
3579                                 "%s: Bad directory inode %Lu, ptr "PTR_FMT,
3580                                 __func__, ip->i_ino, ip);
3581                         goto corrupt_out;
3582                 }
3583         }
3584         if (XFS_TEST_ERROR(ip->i_d.di_nextents + ip->i_d.di_anextents >
3585                                 ip->i_d.di_nblocks, mp, XFS_ERRTAG_IFLUSH_5)) {
3586                 xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
3587                         "%s: detected corrupt incore inode %Lu, "
3588                         "total extents = %d, nblocks = %Ld, ptr "PTR_FMT,
3589                         __func__, ip->i_ino,
3590                         ip->i_d.di_nextents + ip->i_d.di_anextents,
3591                         ip->i_d.di_nblocks, ip);
3592                 goto corrupt_out;
3593         }
3594         if (XFS_TEST_ERROR(ip->i_d.di_forkoff > mp->m_sb.sb_inodesize,
3595                                 mp, XFS_ERRTAG_IFLUSH_6)) {
3596                 xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
3597                         "%s: bad inode %Lu, forkoff 0x%x, ptr "PTR_FMT,
3598                         __func__, ip->i_ino, ip->i_d.di_forkoff, ip);
3599                 goto corrupt_out;
3600         }
3601
3602         /*
3603          * Inode item log recovery for v2 inodes are dependent on the
3604          * di_flushiter count for correct sequencing. We bump the flush
3605          * iteration count so we can detect flushes which postdate a log record
3606          * during recovery. This is redundant as we now log every change and
3607          * hence this can't happen but we need to still do it to ensure
3608          * backwards compatibility with old kernels that predate logging all
3609          * inode changes.
3610          */
3611         if (ip->i_d.di_version < 3)
3612                 ip->i_d.di_flushiter++;
3613
3614         /* Check the inline fork data before we write out. */
3615         if (!xfs_inode_verify_forks(ip))
3616                 goto corrupt_out;
3617
3618         /*
3619          * Copy the dirty parts of the inode into the on-disk inode.  We always
3620          * copy out the core of the inode, because if the inode is dirty at all
3621          * the core must be.
3622          */
3623         xfs_inode_to_disk(ip, dip, iip->ili_item.li_lsn);
3624
3625         /* Wrap, we never let the log put out DI_MAX_FLUSH */
3626         if (ip->i_d.di_flushiter == DI_MAX_FLUSH)
3627                 ip->i_d.di_flushiter = 0;
3628
3629         xfs_iflush_fork(ip, dip, iip, XFS_DATA_FORK);
3630         if (XFS_IFORK_Q(ip))
3631                 xfs_iflush_fork(ip, dip, iip, XFS_ATTR_FORK);
3632         xfs_inobp_check(mp, bp);
3633
3634         /*
3635          * We've recorded everything logged in the inode, so we'd like to clear
3636          * the ili_fields bits so we don't log and flush things unnecessarily.
3637          * However, we can't stop logging all this information until the data
3638          * we've copied into the disk buffer is written to disk.  If we did we
3639          * might overwrite the copy of the inode in the log with all the data
3640          * after re-logging only part of it, and in the face of a crash we
3641          * wouldn't have all the data we need to recover.
3642          *
3643          * What we do is move the bits to the ili_last_fields field.  When
3644          * logging the inode, these bits are moved back to the ili_fields field.
3645          * In the xfs_iflush_done() routine we clear ili_last_fields, since we
3646          * know that the information those bits represent is permanently on
3647          * disk.  As long as the flush completes before the inode is logged
3648          * again, then both ili_fields and ili_last_fields will be cleared.
3649          *
3650          * We can play with the ili_fields bits here, because the inode lock
3651          * must be held exclusively in order to set bits there and the flush
3652          * lock protects the ili_last_fields bits.  Set ili_logged so the flush
3653          * done routine can tell whether or not to look in the AIL.  Also, store
3654          * the current LSN of the inode so that we can tell whether the item has
3655          * moved in the AIL from xfs_iflush_done().  In order to read the lsn we
3656          * need the AIL lock, because it is a 64 bit value that cannot be read
3657          * atomically.
3658          */
3659         iip->ili_last_fields = iip->ili_fields;
3660         iip->ili_fields = 0;
3661         iip->ili_fsync_fields = 0;
3662         iip->ili_logged = 1;
3663
3664         xfs_trans_ail_copy_lsn(mp->m_ail, &iip->ili_flush_lsn,
3665                                 &iip->ili_item.li_lsn);
3666
3667         /*
3668          * Attach the function xfs_iflush_done to the inode's
3669          * buffer.  This will remove the inode from the AIL
3670          * and unlock the inode's flush lock when the inode is
3671          * completely written to disk.
3672          */
3673         xfs_buf_attach_iodone(bp, xfs_iflush_done, &iip->ili_item);
3674
3675         /* generate the checksum. */
3676         xfs_dinode_calc_crc(mp, dip);
3677
3678         ASSERT(!list_empty(&bp->b_li_list));
3679         ASSERT(bp->b_iodone != NULL);
3680         return 0;
3681
3682 corrupt_out:
3683         return -EFSCORRUPTED;
3684 }