diff options
Diffstat (limited to 'fs/ocfs2/inode.c')
| -rw-r--r-- | fs/ocfs2/inode.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c index 278a223aae14..07cc8bb68b6d 100644 --- a/fs/ocfs2/inode.c +++ b/fs/ocfs2/inode.c  | |||
| @@ -25,7 +25,6 @@ | |||
| 25 | 25 | ||
| 26 | #include <linux/fs.h> | 26 | #include <linux/fs.h> | 
| 27 | #include <linux/types.h> | 27 | #include <linux/types.h> | 
| 28 | #include <linux/slab.h> | ||
| 29 | #include <linux/highmem.h> | 28 | #include <linux/highmem.h> | 
| 30 | #include <linux/pagemap.h> | 29 | #include <linux/pagemap.h> | 
| 31 | #include <linux/quotaops.h> | 30 | #include <linux/quotaops.h> | 
| @@ -891,6 +890,21 @@ static int ocfs2_query_inode_wipe(struct inode *inode, | |||
| 891 | /* Do some basic inode verification... */ | 890 | /* Do some basic inode verification... */ | 
| 892 | di = (struct ocfs2_dinode *) di_bh->b_data; | 891 | di = (struct ocfs2_dinode *) di_bh->b_data; | 
| 893 | if (!(di->i_flags & cpu_to_le32(OCFS2_ORPHANED_FL))) { | 892 | if (!(di->i_flags & cpu_to_le32(OCFS2_ORPHANED_FL))) { | 
| 893 | /* | ||
| 894 | * Inodes in the orphan dir must have ORPHANED_FL. The only | ||
| 895 | * inodes that come back out of the orphan dir are reflink | ||
| 896 | * targets. A reflink target may be moved out of the orphan | ||
| 897 | * dir between the time we scan the directory and the time we | ||
| 898 | * process it. This would lead to HAS_REFCOUNT_FL being set but | ||
| 899 | * ORPHANED_FL not. | ||
| 900 | */ | ||
| 901 | if (di->i_dyn_features & cpu_to_le16(OCFS2_HAS_REFCOUNT_FL)) { | ||
| 902 | mlog(0, "Reflinked inode %llu is no longer orphaned. " | ||
| 903 | "it shouldn't be deleted\n", | ||
| 904 | (unsigned long long)oi->ip_blkno); | ||
| 905 | goto bail; | ||
| 906 | } | ||
| 907 | |||
| 894 | /* for lack of a better error? */ | 908 | /* for lack of a better error? */ | 
| 895 | status = -EEXIST; | 909 | status = -EEXIST; | 
| 896 | mlog(ML_ERROR, | 910 | mlog(ML_ERROR, | 
