dir.c (40de9a7cebc4e0b23cd6863c84c2279f0ccadebb) | dir.c (f6089ff87d309a8ddb7b0d4dd92a570f1b0f689b) |
---|---|
1/* 2 * linux/fs/hfsplus/dir.c 3 * 4 * Copyright (C) 2001 5 * Brad Boyer (flar@allandria.com) 6 * (C) 2003 Ardis Technologies <roman@ardistech.com> 7 * 8 * Handling of directories --- 88 unchanged lines hidden (view full) --- 97 err = -EIO; 98 goto fail; 99 } 100 hfs_find_exit(&fd); 101 inode = hfsplus_iget(dir->i_sb, cnid); 102 if (IS_ERR(inode)) 103 return ERR_CAST(inode); 104 if (S_ISREG(inode->i_mode)) | 1/* 2 * linux/fs/hfsplus/dir.c 3 * 4 * Copyright (C) 2001 5 * Brad Boyer (flar@allandria.com) 6 * (C) 2003 Ardis Technologies <roman@ardistech.com> 7 * 8 * Handling of directories --- 88 unchanged lines hidden (view full) --- 97 err = -EIO; 98 goto fail; 99 } 100 hfs_find_exit(&fd); 101 inode = hfsplus_iget(dir->i_sb, cnid); 102 if (IS_ERR(inode)) 103 return ERR_CAST(inode); 104 if (S_ISREG(inode->i_mode)) |
105 HFSPLUS_I(inode)->dev = linkid; | 105 HFSPLUS_I(inode)->linkid = linkid; |
106out: 107 d_add(dentry, inode); 108 return NULL; 109fail: 110 hfs_find_exit(&fd); 111 return ERR_PTR(err); 112} 113 --- 133 unchanged lines hidden (view full) --- 247 struct inode *src_dir = src_dentry->d_parent->d_inode; 248 struct qstr str; 249 char name[32]; 250 u32 cnid, id; 251 int res; 252 253 if (HFSPLUS_IS_RSRC(inode)) 254 return -EPERM; | 106out: 107 d_add(dentry, inode); 108 return NULL; 109fail: 110 hfs_find_exit(&fd); 111 return ERR_PTR(err); 112} 113 --- 133 unchanged lines hidden (view full) --- 247 struct inode *src_dir = src_dentry->d_parent->d_inode; 248 struct qstr str; 249 char name[32]; 250 u32 cnid, id; 251 int res; 252 253 if (HFSPLUS_IS_RSRC(inode)) 254 return -EPERM; |
255 if (!S_ISREG(inode->i_mode)) 256 return -EPERM; |
|
255 256 mutex_lock(&sbi->vh_mutex); 257 if (inode->i_ino == (u32)(unsigned long)src_dentry->d_fsdata) { 258 for (;;) { 259 get_random_bytes(&id, sizeof(cnid)); 260 id &= 0x3fffffff; 261 str.name = name; 262 str.len = sprintf(name, "iNode%d", id); 263 res = hfsplus_rename_cat(inode->i_ino, 264 src_dir, &src_dentry->d_name, 265 sbi->hidden_dir, &str); 266 if (!res) 267 break; 268 if (res != -EEXIST) 269 goto out; 270 } | 257 258 mutex_lock(&sbi->vh_mutex); 259 if (inode->i_ino == (u32)(unsigned long)src_dentry->d_fsdata) { 260 for (;;) { 261 get_random_bytes(&id, sizeof(cnid)); 262 id &= 0x3fffffff; 263 str.name = name; 264 str.len = sprintf(name, "iNode%d", id); 265 res = hfsplus_rename_cat(inode->i_ino, 266 src_dir, &src_dentry->d_name, 267 sbi->hidden_dir, &str); 268 if (!res) 269 break; 270 if (res != -EEXIST) 271 goto out; 272 } |
271 HFSPLUS_I(inode)->dev = id; | 273 HFSPLUS_I(inode)->linkid = id; |
272 cnid = sbi->next_cnid++; 273 src_dentry->d_fsdata = (void *)(unsigned long)cnid; 274 res = hfsplus_create_cat(cnid, src_dir, &src_dentry->d_name, inode); 275 if (res) 276 /* panic? */ 277 goto out; 278 sbi->file_count++; 279 } --- 210 unchanged lines hidden --- | 274 cnid = sbi->next_cnid++; 275 src_dentry->d_fsdata = (void *)(unsigned long)cnid; 276 res = hfsplus_create_cat(cnid, src_dir, &src_dentry->d_name, inode); 277 if (res) 278 /* panic? */ 279 goto out; 280 sbi->file_count++; 281 } --- 210 unchanged lines hidden --- |