Al Viro
41080b5a24
nfsd race fixes: ext2
...
* make ext2_new_inode() put the inode into icache in locked state
* do not unlock until the inode is fully set up; otherwise nfsd
might pick it in half-baked state.
* make sure that ext2_new_inode() does *not* lead to two inodes with the
same inumber hashed at the same time; otherwise a bogus fhandle coming
from nfsd might race with inode creation:
nfsd: iget_locked() creates inode
nfsd: try to read from disk, block on that.
ext2_new_inode(): allocate inode with that inumber
ext2_new_inode(): insert it into icache, set it up and dirty
ext2_write_inode(): get the relevant part of inode table in cache,
set the entry for our inode (and start writing to disk)
nfsd: get CPU again, look into inode table, see nice and sane on-disk
inode, set the in-core inode from it
oops - we have two in-core inodes with the same inumber live in icache,
both used for IO. Welcome to fs corruption...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2008-12-31 18:07:43 -05:00
..
2008-12-25 11:40:09 +11:00
2008-10-13 10:10:37 -07:00
2008-11-14 10:38:45 +11:00
2008-10-31 00:56:28 -07:00
2008-11-14 10:38:45 +11:00
2008-11-14 11:29:12 +11:00
2008-12-31 18:07:40 -05:00
2008-11-14 10:38:47 +11:00
2008-12-31 18:07:43 -05:00
2008-11-20 08:11:52 +11:00
2008-10-23 05:12:52 -04:00
2008-10-13 09:47:43 +11:00
2008-11-14 10:38:49 +11:00
2008-11-25 16:51:45 -08:00
2008-12-31 18:07:38 -05:00
2008-10-23 05:13:01 -04:00
2008-12-25 11:40:09 +11:00
2008-12-31 18:07:43 -05:00
2008-12-31 18:07:39 -05:00
2008-12-31 18:07:39 -05:00
2008-11-14 11:29:12 +11:00
2008-12-31 18:07:40 -05:00
2008-11-14 10:39:19 +11:00
2008-11-14 10:38:53 +11:00
2008-11-14 10:38:54 +11:00
2008-11-14 10:38:54 +11:00
2008-11-19 18:50:00 -08:00
2008-11-14 10:38:55 +11:00
2008-11-14 10:39:25 +11:00
2008-11-14 10:39:18 +11:00
2008-10-23 05:13:01 -04:00
2008-11-06 22:37:59 -05:00
2008-11-06 22:38:07 -05:00
2008-11-06 15:43:13 -08:00
2008-12-30 17:33:33 -08:00
2008-12-30 16:51:43 -05:00
2008-11-14 10:38:57 +11:00
2008-11-14 10:38:58 +11:00
2008-12-30 16:51:43 -05:00
2008-12-23 15:21:32 -05:00
2008-12-30 16:51:43 -05:00
2008-10-17 02:38:36 +11:00
2008-12-31 18:07:43 -05:00
2008-12-01 19:55:25 -08:00
2008-12-28 12:49:40 -08:00
2008-11-14 10:38:59 +11:00
2008-10-23 05:13:21 -04:00
2008-11-18 15:08:56 +01:00
2008-12-30 16:20:19 -08:00
2008-11-14 10:39:00 +11:00
2008-11-14 10:39:01 +11:00
2008-11-14 10:39:18 +11:00
2008-10-23 05:13:21 -04:00
2008-12-31 18:07:39 -05:00
2008-12-04 17:16:36 +11:00
2008-12-04 17:16:36 +11:00
2008-11-14 10:39:04 +11:00
2008-12-29 16:47:18 +11:00
2008-12-29 08:29:50 +01:00
2008-11-14 10:39:05 +11:00
2008-11-14 10:39:05 +11:00
2008-12-31 18:07:43 -05:00
2008-11-14 10:39:24 +11:00
2008-11-14 10:39:24 +11:00
2008-12-28 12:33:21 -08:00
2008-10-16 11:21:38 -07:00
2008-11-14 10:39:24 +11:00
2008-10-16 11:21:38 -07:00
2008-10-16 11:21:38 -07:00
2008-11-14 10:39:24 +11:00
2008-12-29 08:29:23 +01:00
2008-12-29 08:29:53 +01:00
2008-12-31 18:07:43 -05:00
2008-12-29 08:28:44 +01:00
2008-10-23 05:12:59 -04:00
2008-11-14 10:39:24 +11:00
2008-12-31 18:07:42 -05:00
2008-12-31 18:07:38 -05:00
2008-10-16 11:21:32 -07:00
2008-11-14 10:39:05 +11:00
2008-12-01 19:55:24 -08:00
2008-12-31 18:07:41 -05:00
2008-12-25 11:40:09 +11:00
2008-10-21 07:47:06 -04:00
2008-12-31 18:07:42 -05:00
2008-10-23 14:27:09 +04:00
2008-10-16 11:21:32 -07:00
2008-12-31 18:07:43 -05:00
2008-11-14 10:39:24 +11:00
2008-12-05 15:35:10 -08:00
2008-11-14 10:39:19 +11:00
2008-12-31 18:07:43 -05:00
2008-10-20 08:52:39 -07:00
2008-10-30 11:38:45 -07:00
2008-11-14 10:39:05 +11:00
2008-12-31 18:07:43 -05:00
2008-10-16 11:21:32 -07:00
2008-12-31 18:07:42 -05:00
2008-12-31 18:07:38 -05:00
2008-12-31 18:07:41 -05:00
2008-12-31 18:07:37 -05:00
2008-11-14 10:39:05 +11:00
2008-11-14 10:39:05 +11:00
2008-11-14 10:39:05 +11:00
2008-10-23 05:12:59 -04:00
2008-10-23 05:13:10 -04:00
2008-10-26 11:22:08 -07:00
2008-12-31 18:07:41 -05:00
2008-10-30 11:38:45 -07:00
2008-12-20 09:02:39 +11:00
2008-09-05 21:35:09 -07:00