inode.c (c58310bf4933986513020fa90b4190c7492995ae) | inode.c (dca3c33652e437ed02c30ed3eca3cecd0cc00838) |
---|---|
1/* 2 * linux/fs/affs/inode.c 3 * 4 * (c) 1996 Hans-Joachim Widmaier - Rewritten 5 * 6 * (C) 1993 Ray Burr - Modified for Amiga FFS filesystem. 7 * 8 * (C) 1992 Eric Youngdale Modified for ISO9660 filesystem. --- 44 unchanged lines hidden (view full) --- 53 prot = be32_to_cpu(tail->protect); 54 55 inode->i_size = 0; 56 inode->i_nlink = 1; 57 inode->i_mode = 0; 58 AFFS_I(inode)->i_extcnt = 1; 59 AFFS_I(inode)->i_ext_last = ~1; 60 AFFS_I(inode)->i_protect = prot; | 1/* 2 * linux/fs/affs/inode.c 3 * 4 * (c) 1996 Hans-Joachim Widmaier - Rewritten 5 * 6 * (C) 1993 Ray Burr - Modified for Amiga FFS filesystem. 7 * 8 * (C) 1992 Eric Youngdale Modified for ISO9660 filesystem. --- 44 unchanged lines hidden (view full) --- 53 prot = be32_to_cpu(tail->protect); 54 55 inode->i_size = 0; 56 inode->i_nlink = 1; 57 inode->i_mode = 0; 58 AFFS_I(inode)->i_extcnt = 1; 59 AFFS_I(inode)->i_ext_last = ~1; 60 AFFS_I(inode)->i_protect = prot; |
61 AFFS_I(inode)->i_opencnt = 0; | 61 atomic_set(&AFFS_I(inode)->i_opencnt, 0); |
62 AFFS_I(inode)->i_blkcnt = 0; 63 AFFS_I(inode)->i_lc = NULL; 64 AFFS_I(inode)->i_lc_size = 0; 65 AFFS_I(inode)->i_lc_shift = 0; 66 AFFS_I(inode)->i_lc_mask = 0; 67 AFFS_I(inode)->i_ac = NULL; 68 AFFS_I(inode)->i_ext_bh = NULL; 69 AFFS_I(inode)->mmu_private = 0; --- 33 unchanged lines hidden (view full) --- 103 inode->i_mode |= S_IXUSR; 104 if (inode->i_mode & S_IRGRP) 105 inode->i_mode |= S_IXGRP; 106 if (inode->i_mode & S_IROTH) 107 inode->i_mode |= S_IXOTH; 108 inode->i_mode |= S_IFDIR; 109 } else 110 inode->i_mode = S_IRUGO | S_IXUGO | S_IWUSR | S_IFDIR; | 62 AFFS_I(inode)->i_blkcnt = 0; 63 AFFS_I(inode)->i_lc = NULL; 64 AFFS_I(inode)->i_lc_size = 0; 65 AFFS_I(inode)->i_lc_shift = 0; 66 AFFS_I(inode)->i_lc_mask = 0; 67 AFFS_I(inode)->i_ac = NULL; 68 AFFS_I(inode)->i_ext_bh = NULL; 69 AFFS_I(inode)->mmu_private = 0; --- 33 unchanged lines hidden (view full) --- 103 inode->i_mode |= S_IXUSR; 104 if (inode->i_mode & S_IRGRP) 105 inode->i_mode |= S_IXGRP; 106 if (inode->i_mode & S_IROTH) 107 inode->i_mode |= S_IXOTH; 108 inode->i_mode |= S_IFDIR; 109 } else 110 inode->i_mode = S_IRUGO | S_IXUGO | S_IWUSR | S_IFDIR; |
111 if (tail->link_chain) 112 inode->i_nlink = 2; | |
113 /* Maybe it should be controlled by mount parameter? */ 114 //inode->i_mode |= S_ISVTX; 115 inode->i_op = &affs_dir_inode_operations; 116 inode->i_fop = &affs_dir_operations; 117 break; 118 case ST_LINKDIR: 119#if 0 120 affs_warning(sb, "read_inode", "inode is LINKDIR"); --- 119 unchanged lines hidden (view full) --- 240 error = inode_setattr(inode, attr); 241 if (!error && (attr->ia_valid & ATTR_MODE)) 242 mode_to_prot(inode); 243out: 244 return error; 245} 246 247void | 111 /* Maybe it should be controlled by mount parameter? */ 112 //inode->i_mode |= S_ISVTX; 113 inode->i_op = &affs_dir_inode_operations; 114 inode->i_fop = &affs_dir_operations; 115 break; 116 case ST_LINKDIR: 117#if 0 118 affs_warning(sb, "read_inode", "inode is LINKDIR"); --- 119 unchanged lines hidden (view full) --- 238 error = inode_setattr(inode, attr); 239 if (!error && (attr->ia_valid & ATTR_MODE)) 240 mode_to_prot(inode); 241out: 242 return error; 243} 244 245void |
248affs_put_inode(struct inode *inode) 249{ 250 pr_debug("AFFS: put_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); 251 affs_free_prealloc(inode); 252} 253 254void 255affs_drop_inode(struct inode *inode) 256{ 257 mutex_lock(&inode->i_mutex); 258 if (inode->i_size != AFFS_I(inode)->mmu_private) 259 affs_truncate(inode); 260 mutex_unlock(&inode->i_mutex); 261 262 generic_drop_inode(inode); 263} 264 265void | |
266affs_delete_inode(struct inode *inode) 267{ 268 pr_debug("AFFS: delete_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); 269 truncate_inode_pages(&inode->i_data, 0); 270 inode->i_size = 0; | 246affs_delete_inode(struct inode *inode) 247{ 248 pr_debug("AFFS: delete_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); 249 truncate_inode_pages(&inode->i_data, 0); 250 inode->i_size = 0; |
271 if (S_ISREG(inode->i_mode)) 272 affs_truncate(inode); | 251 affs_truncate(inode); |
273 clear_inode(inode); 274 affs_free_block(inode->i_sb, inode->i_ino); 275} 276 277void 278affs_clear_inode(struct inode *inode) 279{ | 252 clear_inode(inode); 253 affs_free_block(inode->i_sb, inode->i_ino); 254} 255 256void 257affs_clear_inode(struct inode *inode) 258{ |
280 unsigned long cache_page = (unsigned long) AFFS_I(inode)->i_lc; | 259 unsigned long cache_page; |
281 282 pr_debug("AFFS: clear_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); | 260 261 pr_debug("AFFS: clear_inode(ino=%lu, nlink=%u)\n", inode->i_ino, inode->i_nlink); |
262 263 affs_free_prealloc(inode); 264 cache_page = (unsigned long)AFFS_I(inode)->i_lc; |
|
283 if (cache_page) { 284 pr_debug("AFFS: freeing ext cache\n"); 285 AFFS_I(inode)->i_lc = NULL; 286 AFFS_I(inode)->i_ac = NULL; 287 free_page(cache_page); 288 } 289 affs_brelse(AFFS_I(inode)->i_ext_bh); 290 AFFS_I(inode)->i_ext_last = ~1; --- 20 unchanged lines hidden (view full) --- 311 mark_buffer_dirty_inode(bh, inode); 312 affs_brelse(bh); 313 314 inode->i_uid = current->fsuid; 315 inode->i_gid = current->fsgid; 316 inode->i_ino = block; 317 inode->i_nlink = 1; 318 inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; | 265 if (cache_page) { 266 pr_debug("AFFS: freeing ext cache\n"); 267 AFFS_I(inode)->i_lc = NULL; 268 AFFS_I(inode)->i_ac = NULL; 269 free_page(cache_page); 270 } 271 affs_brelse(AFFS_I(inode)->i_ext_bh); 272 AFFS_I(inode)->i_ext_last = ~1; --- 20 unchanged lines hidden (view full) --- 293 mark_buffer_dirty_inode(bh, inode); 294 affs_brelse(bh); 295 296 inode->i_uid = current->fsuid; 297 inode->i_gid = current->fsgid; 298 inode->i_ino = block; 299 inode->i_nlink = 1; 300 inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; |
319 AFFS_I(inode)->i_opencnt = 0; | 301 atomic_set(&AFFS_I(inode)->i_opencnt, 0); |
320 AFFS_I(inode)->i_blkcnt = 0; 321 AFFS_I(inode)->i_lc = NULL; 322 AFFS_I(inode)->i_lc_size = 0; 323 AFFS_I(inode)->i_lc_shift = 0; 324 AFFS_I(inode)->i_lc_mask = 0; 325 AFFS_I(inode)->i_ac = NULL; 326 AFFS_I(inode)->i_ext_bh = NULL; 327 AFFS_I(inode)->mmu_private = 0; --- 36 unchanged lines hidden (view full) --- 364 bh = affs_bread(sb, inode->i_ino); 365 if (!bh) 366 goto done; 367 368 affs_lock_link(inode); 369 switch (type) { 370 case ST_LINKFILE: 371 case ST_LINKDIR: | 302 AFFS_I(inode)->i_blkcnt = 0; 303 AFFS_I(inode)->i_lc = NULL; 304 AFFS_I(inode)->i_lc_size = 0; 305 AFFS_I(inode)->i_lc_shift = 0; 306 AFFS_I(inode)->i_lc_mask = 0; 307 AFFS_I(inode)->i_ac = NULL; 308 AFFS_I(inode)->i_ext_bh = NULL; 309 AFFS_I(inode)->mmu_private = 0; --- 36 unchanged lines hidden (view full) --- 346 bh = affs_bread(sb, inode->i_ino); 347 if (!bh) 348 goto done; 349 350 affs_lock_link(inode); 351 switch (type) { 352 case ST_LINKFILE: 353 case ST_LINKDIR: |
372 inode_bh = bh; | |
373 retval = -ENOSPC; 374 block = affs_alloc_block(dir, dir->i_ino); 375 if (!block) 376 goto err; 377 retval = -EIO; | 354 retval = -ENOSPC; 355 block = affs_alloc_block(dir, dir->i_ino); 356 if (!block) 357 goto err; 358 retval = -EIO; |
359 inode_bh = bh; |
|
378 bh = affs_getzeroblk(sb, block); 379 if (!bh) 380 goto err; 381 break; 382 default: 383 break; 384 } 385 --- 38 unchanged lines hidden --- | 360 bh = affs_getzeroblk(sb, block); 361 if (!bh) 362 goto err; 363 break; 364 default: 365 break; 366 } 367 --- 38 unchanged lines hidden --- |