diff options
Diffstat (limited to 'fs/logfs')
-rw-r--r-- | fs/logfs/dir.c | 8 | ||||
-rw-r--r-- | fs/logfs/inode.c | 3 | ||||
-rw-r--r-- | fs/logfs/logfs.h | 1 | ||||
-rw-r--r-- | fs/logfs/readwrite.c | 2 | ||||
-rw-r--r-- | fs/logfs/super.c | 22 |
5 files changed, 6 insertions, 30 deletions
diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c index b3ff3d894165..b7d7f67cee5a 100644 --- a/fs/logfs/dir.c +++ b/fs/logfs/dir.c | |||
@@ -197,7 +197,7 @@ static int logfs_remove_inode(struct inode *inode) | |||
197 | { | 197 | { |
198 | int ret; | 198 | int ret; |
199 | 199 | ||
200 | inode->i_nlink--; | 200 | drop_nlink(inode); |
201 | ret = write_inode(inode); | 201 | ret = write_inode(inode); |
202 | LOGFS_BUG_ON(ret, inode->i_sb); | 202 | LOGFS_BUG_ON(ret, inode->i_sb); |
203 | return ret; | 203 | return ret; |
@@ -433,7 +433,7 @@ static int __logfs_create(struct inode *dir, struct dentry *dentry, | |||
433 | 433 | ||
434 | ta = kzalloc(sizeof(*ta), GFP_KERNEL); | 434 | ta = kzalloc(sizeof(*ta), GFP_KERNEL); |
435 | if (!ta) { | 435 | if (!ta) { |
436 | inode->i_nlink--; | 436 | drop_nlink(inode); |
437 | iput(inode); | 437 | iput(inode); |
438 | return -ENOMEM; | 438 | return -ENOMEM; |
439 | } | 439 | } |
@@ -456,7 +456,7 @@ static int __logfs_create(struct inode *dir, struct dentry *dentry, | |||
456 | abort_transaction(inode, ta); | 456 | abort_transaction(inode, ta); |
457 | li->li_flags |= LOGFS_IF_STILLBORN; | 457 | li->li_flags |= LOGFS_IF_STILLBORN; |
458 | /* FIXME: truncate symlink */ | 458 | /* FIXME: truncate symlink */ |
459 | inode->i_nlink--; | 459 | drop_nlink(inode); |
460 | iput(inode); | 460 | iput(inode); |
461 | goto out; | 461 | goto out; |
462 | } | 462 | } |
@@ -563,7 +563,7 @@ static int logfs_link(struct dentry *old_dentry, struct inode *dir, | |||
563 | 563 | ||
564 | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; | 564 | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
565 | ihold(inode); | 565 | ihold(inode); |
566 | inode->i_nlink++; | 566 | inc_nlink(inode); |
567 | mark_inode_dirty_sync(inode); | 567 | mark_inode_dirty_sync(inode); |
568 | 568 | ||
569 | return __logfs_create(dir, dentry, inode, NULL, 0); | 569 | return __logfs_create(dir, dentry, inode, NULL, 0); |
diff --git a/fs/logfs/inode.c b/fs/logfs/inode.c index edfea7a3a747..7e441ad5f792 100644 --- a/fs/logfs/inode.c +++ b/fs/logfs/inode.c | |||
@@ -93,7 +93,7 @@ static struct inode *__logfs_iget(struct super_block *sb, ino_t ino) | |||
93 | /* inode->i_nlink == 0 can be true when called from | 93 | /* inode->i_nlink == 0 can be true when called from |
94 | * block validator */ | 94 | * block validator */ |
95 | /* set i_nlink to 0 to prevent caching */ | 95 | /* set i_nlink to 0 to prevent caching */ |
96 | inode->i_nlink = 0; | 96 | clear_nlink(inode); |
97 | logfs_inode(inode)->li_flags |= LOGFS_IF_ZOMBIE; | 97 | logfs_inode(inode)->li_flags |= LOGFS_IF_ZOMBIE; |
98 | iget_failed(inode); | 98 | iget_failed(inode); |
99 | if (!err) | 99 | if (!err) |
@@ -199,7 +199,6 @@ static void logfs_init_inode(struct super_block *sb, struct inode *inode) | |||
199 | inode->i_blocks = 0; | 199 | inode->i_blocks = 0; |
200 | inode->i_ctime = CURRENT_TIME; | 200 | inode->i_ctime = CURRENT_TIME; |
201 | inode->i_mtime = CURRENT_TIME; | 201 | inode->i_mtime = CURRENT_TIME; |
202 | inode->i_nlink = 1; | ||
203 | li->li_refcount = 1; | 202 | li->li_refcount = 1; |
204 | INIT_LIST_HEAD(&li->li_freeing_list); | 203 | INIT_LIST_HEAD(&li->li_freeing_list); |
205 | 204 | ||
diff --git a/fs/logfs/logfs.h b/fs/logfs/logfs.h index f22d108bfa5d..398ecff6e548 100644 --- a/fs/logfs/logfs.h +++ b/fs/logfs/logfs.h | |||
@@ -618,7 +618,6 @@ static inline int logfs_buf_recover(struct logfs_area *area, u64 ofs, | |||
618 | struct page *emergency_read_begin(struct address_space *mapping, pgoff_t index); | 618 | struct page *emergency_read_begin(struct address_space *mapping, pgoff_t index); |
619 | void emergency_read_end(struct page *page); | 619 | void emergency_read_end(struct page *page); |
620 | void logfs_crash_dump(struct super_block *sb); | 620 | void logfs_crash_dump(struct super_block *sb); |
621 | void *memchr_inv(const void *s, int c, size_t n); | ||
622 | int logfs_statfs(struct dentry *dentry, struct kstatfs *stats); | 621 | int logfs_statfs(struct dentry *dentry, struct kstatfs *stats); |
623 | int logfs_check_ds(struct logfs_disk_super *ds); | 622 | int logfs_check_ds(struct logfs_disk_super *ds); |
624 | int logfs_write_sb(struct super_block *sb); | 623 | int logfs_write_sb(struct super_block *sb); |
diff --git a/fs/logfs/readwrite.c b/fs/logfs/readwrite.c index d8d09380c7de..2ac4217b7901 100644 --- a/fs/logfs/readwrite.c +++ b/fs/logfs/readwrite.c | |||
@@ -126,7 +126,7 @@ static void logfs_disk_to_inode(struct logfs_disk_inode *di, struct inode*inode) | |||
126 | inode->i_atime = be64_to_timespec(di->di_atime); | 126 | inode->i_atime = be64_to_timespec(di->di_atime); |
127 | inode->i_ctime = be64_to_timespec(di->di_ctime); | 127 | inode->i_ctime = be64_to_timespec(di->di_ctime); |
128 | inode->i_mtime = be64_to_timespec(di->di_mtime); | 128 | inode->i_mtime = be64_to_timespec(di->di_mtime); |
129 | inode->i_nlink = be32_to_cpu(di->di_refcount); | 129 | set_nlink(inode, be32_to_cpu(di->di_refcount)); |
130 | inode->i_generation = be32_to_cpu(di->di_generation); | 130 | inode->i_generation = be32_to_cpu(di->di_generation); |
131 | 131 | ||
132 | switch (inode->i_mode & S_IFMT) { | 132 | switch (inode->i_mode & S_IFMT) { |
diff --git a/fs/logfs/super.c b/fs/logfs/super.c index b9b3154b0485..e795c234ea33 100644 --- a/fs/logfs/super.c +++ b/fs/logfs/super.c | |||
@@ -92,28 +92,6 @@ void logfs_crash_dump(struct super_block *sb) | |||
92 | } | 92 | } |
93 | 93 | ||
94 | /* | 94 | /* |
95 | * TODO: move to lib/string.c | ||
96 | */ | ||
97 | /** | ||
98 | * memchr_inv - Find a character in an area of memory. | ||
99 | * @s: The memory area | ||
100 | * @c: The byte to search for | ||
101 | * @n: The size of the area. | ||
102 | * | ||
103 | * returns the address of the first character other than @c, or %NULL | ||
104 | * if the whole buffer contains just @c. | ||
105 | */ | ||
106 | void *memchr_inv(const void *s, int c, size_t n) | ||
107 | { | ||
108 | const unsigned char *p = s; | ||
109 | while (n-- != 0) | ||
110 | if ((unsigned char)c != *p++) | ||
111 | return (void *)(p - 1); | ||
112 | |||
113 | return NULL; | ||
114 | } | ||
115 | |||
116 | /* | ||
117 | * FIXME: There should be a reserve for root, similar to ext2. | 95 | * FIXME: There should be a reserve for root, similar to ext2. |
118 | */ | 96 | */ |
119 | int logfs_statfs(struct dentry *dentry, struct kstatfs *stats) | 97 | int logfs_statfs(struct dentry *dentry, struct kstatfs *stats) |