1 /* -*- mode: c; c-basic-offset: 8; -*- 2 * vim: noexpandtab sw=8 ts=8 sts=0: 3 * 4 * inode.c 5 * 6 * vfs' aops, fops, dops and iops 7 * 8 * Copyright (C) 2002, 2004 Oracle. All rights reserved. 9 * 10 * This program is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public 12 * License as published by the Free Software Foundation; either 13 * version 2 of the License, or (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public 21 * License along with this program; if not, write to the 22 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 23 * Boston, MA 021110-1307, USA. 24 */ 25 26 #include <linux/fs.h> 27 #include <linux/types.h> 28 #include <linux/slab.h> 29 #include <linux/highmem.h> 30 #include <linux/pagemap.h> 31 #include <linux/smp_lock.h> 32 33 #include <asm/byteorder.h> 34 35 #define MLOG_MASK_PREFIX ML_INODE 36 #include <cluster/masklog.h> 37 38 #include "ocfs2.h" 39 40 #include "alloc.h" 41 #include "dlmglue.h" 42 #include "extent_map.h" 43 #include "file.h" 44 #include "heartbeat.h" 45 #include "inode.h" 46 #include "journal.h" 47 #include "namei.h" 48 #include "suballoc.h" 49 #include "super.h" 50 #include "symlink.h" 51 #include "sysfile.h" 52 #include "uptodate.h" 53 #include "vote.h" 54 55 #include "buffer_head_io.h" 56 57 struct ocfs2_find_inode_args 58 { 59 u64 fi_blkno; 60 unsigned long fi_ino; 61 unsigned int fi_flags; 62 }; 63 64 static int ocfs2_read_locked_inode(struct inode *inode, 65 struct ocfs2_find_inode_args *args); 66 static int ocfs2_init_locked_inode(struct inode *inode, void *opaque); 67 static int ocfs2_find_actor(struct inode *inode, void *opaque); 68 static int ocfs2_truncate_for_delete(struct ocfs2_super *osb, 69 struct inode *inode, 70 struct buffer_head *fe_bh); 71 72 void ocfs2_set_inode_flags(struct inode *inode) 73 { 74 unsigned int flags = OCFS2_I(inode)->ip_attr; 75 76 inode->i_flags &= ~(S_IMMUTABLE | 77 S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC); 78 79 if (flags & OCFS2_IMMUTABLE_FL) 80 inode->i_flags |= S_IMMUTABLE; 81 82 if (flags & OCFS2_SYNC_FL) 83 inode->i_flags |= S_SYNC; 84 if (flags & OCFS2_APPEND_FL) 85 inode->i_flags |= S_APPEND; 86 if (flags & OCFS2_NOATIME_FL) 87 inode->i_flags |= S_NOATIME; 88 if (flags & OCFS2_DIRSYNC_FL) 89 inode->i_flags |= S_DIRSYNC; 90 } 91 92 /* Propagate flags from i_flags to OCFS2_I(inode)->ip_attr */ 93 void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi) 94 { 95 unsigned int flags = oi->vfs_inode.i_flags; 96 97 oi->ip_attr &= ~(OCFS2_SYNC_FL|OCFS2_APPEND_FL| 98 OCFS2_IMMUTABLE_FL|OCFS2_NOATIME_FL|OCFS2_DIRSYNC_FL); 99 if (flags & S_SYNC) 100 oi->ip_attr |= OCFS2_SYNC_FL; 101 if (flags & S_APPEND) 102 oi->ip_attr |= OCFS2_APPEND_FL; 103 if (flags & S_IMMUTABLE) 104 oi->ip_attr |= OCFS2_IMMUTABLE_FL; 105 if (flags & S_NOATIME) 106 oi->ip_attr |= OCFS2_NOATIME_FL; 107 if (flags & S_DIRSYNC) 108 oi->ip_attr |= OCFS2_DIRSYNC_FL; 109 } 110 111 struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, int flags) 112 { 113 struct inode *inode = NULL; 114 struct super_block *sb = osb->sb; 115 struct ocfs2_find_inode_args args; 116 117 mlog_entry("(blkno = %llu)\n", (unsigned long long)blkno); 118 119 /* Ok. By now we've either got the offsets passed to us by the 120 * caller, or we just pulled them off the bh. Lets do some 121 * sanity checks to make sure they're OK. */ 122 if (blkno == 0) { 123 inode = ERR_PTR(-EINVAL); 124 mlog_errno(PTR_ERR(inode)); 125 goto bail; 126 } 127 128 args.fi_blkno = blkno; 129 args.fi_flags = flags; 130 args.fi_ino = ino_from_blkno(sb, blkno); 131 132 inode = iget5_locked(sb, args.fi_ino, ocfs2_find_actor, 133 ocfs2_init_locked_inode, &args); 134 /* inode was *not* in the inode cache. 2.6.x requires 135 * us to do our own read_inode call and unlock it 136 * afterwards. */ 137 if (inode && inode->i_state & I_NEW) { 138 mlog(0, "Inode was not in inode cache, reading it.\n"); 139 ocfs2_read_locked_inode(inode, &args); 140 unlock_new_inode(inode); 141 } 142 if (inode == NULL) { 143 inode = ERR_PTR(-ENOMEM); 144 mlog_errno(PTR_ERR(inode)); 145 goto bail; 146 } 147 if (is_bad_inode(inode)) { 148 iput(inode); 149 inode = ERR_PTR(-ESTALE); 150 goto bail; 151 } 152 153 bail: 154 if (!IS_ERR(inode)) { 155 mlog(0, "returning inode with number %llu\n", 156 (unsigned long long)OCFS2_I(inode)->ip_blkno); 157 mlog_exit_ptr(inode); 158 } 159 160 return inode; 161 } 162 163 164 /* 165 * here's how inodes get read from disk: 166 * iget5_locked -> find_actor -> OCFS2_FIND_ACTOR 167 * found? : return the in-memory inode 168 * not found? : get_new_inode -> OCFS2_INIT_LOCKED_INODE 169 */ 170 171 static int ocfs2_find_actor(struct inode *inode, void *opaque) 172 { 173 struct ocfs2_find_inode_args *args = NULL; 174 struct ocfs2_inode_info *oi = OCFS2_I(inode); 175 int ret = 0; 176 177 mlog_entry("(0x%p, %lu, 0x%p)\n", inode, inode->i_ino, opaque); 178 179 args = opaque; 180 181 mlog_bug_on_msg(!inode, "No inode in find actor!\n"); 182 183 if (oi->ip_blkno != args->fi_blkno) 184 goto bail; 185 186 ret = 1; 187 bail: 188 mlog_exit(ret); 189 return ret; 190 } 191 192 /* 193 * initialize the new inode, but don't do anything that would cause 194 * us to sleep. 195 * return 0 on success, 1 on failure 196 */ 197 static int ocfs2_init_locked_inode(struct inode *inode, void *opaque) 198 { 199 struct ocfs2_find_inode_args *args = opaque; 200 201 mlog_entry("inode = %p, opaque = %p\n", inode, opaque); 202 203 inode->i_ino = args->fi_ino; 204 OCFS2_I(inode)->ip_blkno = args->fi_blkno; 205 206 mlog_exit(0); 207 return 0; 208 } 209 210 int ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, 211 int create_ino) 212 { 213 struct super_block *sb; 214 struct ocfs2_super *osb; 215 int status = -EINVAL; 216 217 mlog_entry("(0x%p, size:%llu)\n", inode, 218 (unsigned long long)le64_to_cpu(fe->i_size)); 219 220 sb = inode->i_sb; 221 osb = OCFS2_SB(sb); 222 223 /* this means that read_inode cannot create a superblock inode 224 * today. change if needed. */ 225 if (!OCFS2_IS_VALID_DINODE(fe) || 226 !(fe->i_flags & cpu_to_le32(OCFS2_VALID_FL))) { 227 mlog(0, "Invalid dinode: i_ino=%lu, i_blkno=%llu, " 228 "signature = %.*s, flags = 0x%x\n", 229 inode->i_ino, 230 (unsigned long long)le64_to_cpu(fe->i_blkno), 7, 231 fe->i_signature, le32_to_cpu(fe->i_flags)); 232 goto bail; 233 } 234 235 if (le32_to_cpu(fe->i_fs_generation) != osb->fs_generation) { 236 mlog(ML_ERROR, "file entry generation does not match " 237 "superblock! osb->fs_generation=%x, " 238 "fe->i_fs_generation=%x\n", 239 osb->fs_generation, le32_to_cpu(fe->i_fs_generation)); 240 goto bail; 241 } 242 243 OCFS2_I(inode)->ip_clusters = le32_to_cpu(fe->i_clusters); 244 OCFS2_I(inode)->ip_attr = le32_to_cpu(fe->i_attr); 245 246 inode->i_version = 1; 247 inode->i_generation = le32_to_cpu(fe->i_generation); 248 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev)); 249 inode->i_mode = le16_to_cpu(fe->i_mode); 250 inode->i_uid = le32_to_cpu(fe->i_uid); 251 inode->i_gid = le32_to_cpu(fe->i_gid); 252 253 /* Fast symlinks will have i_size but no allocated clusters. */ 254 if (S_ISLNK(inode->i_mode) && !fe->i_clusters) 255 inode->i_blocks = 0; 256 else 257 inode->i_blocks = ocfs2_inode_sector_count(inode); 258 inode->i_mapping->a_ops = &ocfs2_aops; 259 inode->i_atime.tv_sec = le64_to_cpu(fe->i_atime); 260 inode->i_atime.tv_nsec = le32_to_cpu(fe->i_atime_nsec); 261 inode->i_mtime.tv_sec = le64_to_cpu(fe->i_mtime); 262 inode->i_mtime.tv_nsec = le32_to_cpu(fe->i_mtime_nsec); 263 inode->i_ctime.tv_sec = le64_to_cpu(fe->i_ctime); 264 inode->i_ctime.tv_nsec = le32_to_cpu(fe->i_ctime_nsec); 265 266 if (OCFS2_I(inode)->ip_blkno != le64_to_cpu(fe->i_blkno)) 267 mlog(ML_ERROR, 268 "ip_blkno %llu != i_blkno %llu!\n", 269 (unsigned long long)OCFS2_I(inode)->ip_blkno, 270 (unsigned long long)le64_to_cpu(fe->i_blkno)); 271 272 inode->i_nlink = le16_to_cpu(fe->i_links_count); 273 274 if (fe->i_flags & cpu_to_le32(OCFS2_SYSTEM_FL)) 275 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_SYSTEM_FILE; 276 277 if (fe->i_flags & cpu_to_le32(OCFS2_LOCAL_ALLOC_FL)) { 278 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_BITMAP; 279 mlog(0, "local alloc inode: i_ino=%lu\n", inode->i_ino); 280 } else if (fe->i_flags & cpu_to_le32(OCFS2_BITMAP_FL)) { 281 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_BITMAP; 282 } else if (fe->i_flags & cpu_to_le32(OCFS2_SUPER_BLOCK_FL)) { 283 mlog(0, "superblock inode: i_ino=%lu\n", inode->i_ino); 284 /* we can't actually hit this as read_inode can't 285 * handle superblocks today ;-) */ 286 BUG(); 287 } 288 289 switch (inode->i_mode & S_IFMT) { 290 case S_IFREG: 291 inode->i_fop = &ocfs2_fops; 292 inode->i_op = &ocfs2_file_iops; 293 i_size_write(inode, le64_to_cpu(fe->i_size)); 294 break; 295 case S_IFDIR: 296 inode->i_op = &ocfs2_dir_iops; 297 inode->i_fop = &ocfs2_dops; 298 i_size_write(inode, le64_to_cpu(fe->i_size)); 299 break; 300 case S_IFLNK: 301 if (ocfs2_inode_is_fast_symlink(inode)) 302 inode->i_op = &ocfs2_fast_symlink_inode_operations; 303 else 304 inode->i_op = &ocfs2_symlink_inode_operations; 305 i_size_write(inode, le64_to_cpu(fe->i_size)); 306 break; 307 default: 308 inode->i_op = &ocfs2_special_file_iops; 309 init_special_inode(inode, inode->i_mode, 310 inode->i_rdev); 311 break; 312 } 313 314 if (create_ino) { 315 inode->i_ino = ino_from_blkno(inode->i_sb, 316 le64_to_cpu(fe->i_blkno)); 317 318 /* 319 * If we ever want to create system files from kernel, 320 * the generation argument to 321 * ocfs2_inode_lock_res_init() will have to change. 322 */ 323 BUG_ON(le32_to_cpu(fe->i_flags) & OCFS2_SYSTEM_FL); 324 325 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_meta_lockres, 326 OCFS2_LOCK_TYPE_META, 0, inode); 327 328 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_open_lockres, 329 OCFS2_LOCK_TYPE_OPEN, 0, inode); 330 } 331 332 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_rw_lockres, 333 OCFS2_LOCK_TYPE_RW, inode->i_generation, 334 inode); 335 336 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_data_lockres, 337 OCFS2_LOCK_TYPE_DATA, inode->i_generation, 338 inode); 339 340 ocfs2_set_inode_flags(inode); 341 342 status = 0; 343 bail: 344 mlog_exit(status); 345 return status; 346 } 347 348 static int ocfs2_read_locked_inode(struct inode *inode, 349 struct ocfs2_find_inode_args *args) 350 { 351 struct super_block *sb; 352 struct ocfs2_super *osb; 353 struct ocfs2_dinode *fe; 354 struct buffer_head *bh = NULL; 355 int status, can_lock; 356 u32 generation = 0; 357 358 mlog_entry("(0x%p, 0x%p)\n", inode, args); 359 360 status = -EINVAL; 361 if (inode == NULL || inode->i_sb == NULL) { 362 mlog(ML_ERROR, "bad inode\n"); 363 return status; 364 } 365 sb = inode->i_sb; 366 osb = OCFS2_SB(sb); 367 368 if (!args) { 369 mlog(ML_ERROR, "bad inode args\n"); 370 make_bad_inode(inode); 371 return status; 372 } 373 374 /* 375 * To improve performance of cold-cache inode stats, we take 376 * the cluster lock here if possible. 377 * 378 * Generally, OCFS2 never trusts the contents of an inode 379 * unless it's holding a cluster lock, so taking it here isn't 380 * a correctness issue as much as it is a performance 381 * improvement. 382 * 383 * There are three times when taking the lock is not a good idea: 384 * 385 * 1) During startup, before we have initialized the DLM. 386 * 387 * 2) If we are reading certain system files which never get 388 * cluster locks (local alloc, truncate log). 389 * 390 * 3) If the process doing the iget() is responsible for 391 * orphan dir recovery. We're holding the orphan dir lock and 392 * can get into a deadlock with another process on another 393 * node in ->delete_inode(). 394 * 395 * #1 and #2 can be simply solved by never taking the lock 396 * here for system files (which are the only type we read 397 * during mount). It's a heavier approach, but our main 398 * concern is user-accesible files anyway. 399 * 400 * #3 works itself out because we'll eventually take the 401 * cluster lock before trusting anything anyway. 402 */ 403 can_lock = !(args->fi_flags & OCFS2_FI_FLAG_SYSFILE) 404 && !(args->fi_flags & OCFS2_FI_FLAG_ORPHAN_RECOVERY) 405 && !ocfs2_mount_local(osb); 406 407 /* 408 * To maintain backwards compatibility with older versions of 409 * ocfs2-tools, we still store the generation value for system 410 * files. The only ones that actually matter to userspace are 411 * the journals, but it's easier and inexpensive to just flag 412 * all system files similarly. 413 */ 414 if (args->fi_flags & OCFS2_FI_FLAG_SYSFILE) 415 generation = osb->fs_generation; 416 417 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_meta_lockres, 418 OCFS2_LOCK_TYPE_META, 419 generation, inode); 420 421 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_open_lockres, 422 OCFS2_LOCK_TYPE_OPEN, 423 0, inode); 424 425 if (can_lock) { 426 status = ocfs2_open_lock(inode); 427 if (status) { 428 make_bad_inode(inode); 429 mlog_errno(status); 430 return status; 431 } 432 status = ocfs2_meta_lock(inode, NULL, 0); 433 if (status) { 434 make_bad_inode(inode); 435 mlog_errno(status); 436 return status; 437 } 438 } 439 440 if (args->fi_flags & OCFS2_FI_FLAG_ORPHAN_RECOVERY) { 441 status = ocfs2_try_open_lock(inode, 0); 442 if (status) { 443 make_bad_inode(inode); 444 return status; 445 } 446 } 447 448 status = ocfs2_read_block(osb, args->fi_blkno, &bh, 0, 449 can_lock ? inode : NULL); 450 if (status < 0) { 451 mlog_errno(status); 452 goto bail; 453 } 454 455 status = -EINVAL; 456 fe = (struct ocfs2_dinode *) bh->b_data; 457 if (!OCFS2_IS_VALID_DINODE(fe)) { 458 mlog(ML_ERROR, "Invalid dinode #%llu: signature = %.*s\n", 459 (unsigned long long)le64_to_cpu(fe->i_blkno), 7, 460 fe->i_signature); 461 goto bail; 462 } 463 464 /* 465 * This is a code bug. Right now the caller needs to 466 * understand whether it is asking for a system file inode or 467 * not so the proper lock names can be built. 468 */ 469 mlog_bug_on_msg(!!(fe->i_flags & cpu_to_le32(OCFS2_SYSTEM_FL)) != 470 !!(args->fi_flags & OCFS2_FI_FLAG_SYSFILE), 471 "Inode %llu: system file state is ambigous\n", 472 (unsigned long long)args->fi_blkno); 473 474 if (S_ISCHR(le16_to_cpu(fe->i_mode)) || 475 S_ISBLK(le16_to_cpu(fe->i_mode))) 476 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev)); 477 478 if (ocfs2_populate_inode(inode, fe, 0) < 0) 479 goto bail; 480 481 BUG_ON(args->fi_blkno != le64_to_cpu(fe->i_blkno)); 482 483 status = 0; 484 485 bail: 486 if (can_lock) 487 ocfs2_meta_unlock(inode, 0); 488 489 if (status < 0) 490 make_bad_inode(inode); 491 492 if (args && bh) 493 brelse(bh); 494 495 mlog_exit(status); 496 return status; 497 } 498 499 void ocfs2_sync_blockdev(struct super_block *sb) 500 { 501 sync_blockdev(sb->s_bdev); 502 } 503 504 static int ocfs2_truncate_for_delete(struct ocfs2_super *osb, 505 struct inode *inode, 506 struct buffer_head *fe_bh) 507 { 508 int status = 0; 509 struct ocfs2_truncate_context *tc = NULL; 510 struct ocfs2_dinode *fe; 511 handle_t *handle = NULL; 512 513 mlog_entry_void(); 514 515 fe = (struct ocfs2_dinode *) fe_bh->b_data; 516 517 if (fe->i_clusters) { 518 handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); 519 if (IS_ERR(handle)) { 520 status = PTR_ERR(handle); 521 mlog_errno(status); 522 goto out; 523 } 524 525 status = ocfs2_journal_access(handle, inode, fe_bh, 526 OCFS2_JOURNAL_ACCESS_WRITE); 527 if (status < 0) { 528 mlog_errno(status); 529 goto out; 530 } 531 532 i_size_write(inode, 0); 533 534 status = ocfs2_mark_inode_dirty(handle, inode, fe_bh); 535 if (status < 0) { 536 mlog_errno(status); 537 goto out; 538 } 539 540 ocfs2_commit_trans(osb, handle); 541 handle = NULL; 542 543 status = ocfs2_prepare_truncate(osb, inode, fe_bh, &tc); 544 if (status < 0) { 545 mlog_errno(status); 546 goto out; 547 } 548 549 status = ocfs2_commit_truncate(osb, inode, fe_bh, tc); 550 if (status < 0) { 551 mlog_errno(status); 552 goto out; 553 } 554 } 555 556 out: 557 if (handle) 558 ocfs2_commit_trans(osb, handle); 559 mlog_exit(status); 560 return status; 561 } 562 563 static int ocfs2_remove_inode(struct inode *inode, 564 struct buffer_head *di_bh, 565 struct inode *orphan_dir_inode, 566 struct buffer_head *orphan_dir_bh) 567 { 568 int status; 569 struct inode *inode_alloc_inode = NULL; 570 struct buffer_head *inode_alloc_bh = NULL; 571 handle_t *handle; 572 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); 573 struct ocfs2_dinode *di = (struct ocfs2_dinode *) di_bh->b_data; 574 575 inode_alloc_inode = 576 ocfs2_get_system_file_inode(osb, INODE_ALLOC_SYSTEM_INODE, 577 le16_to_cpu(di->i_suballoc_slot)); 578 if (!inode_alloc_inode) { 579 status = -EEXIST; 580 mlog_errno(status); 581 goto bail; 582 } 583 584 mutex_lock(&inode_alloc_inode->i_mutex); 585 status = ocfs2_meta_lock(inode_alloc_inode, &inode_alloc_bh, 1); 586 if (status < 0) { 587 mutex_unlock(&inode_alloc_inode->i_mutex); 588 589 mlog_errno(status); 590 goto bail; 591 } 592 593 handle = ocfs2_start_trans(osb, OCFS2_DELETE_INODE_CREDITS); 594 if (IS_ERR(handle)) { 595 status = PTR_ERR(handle); 596 mlog_errno(status); 597 goto bail_unlock; 598 } 599 600 status = ocfs2_orphan_del(osb, handle, orphan_dir_inode, inode, 601 orphan_dir_bh); 602 if (status < 0) { 603 mlog_errno(status); 604 goto bail_commit; 605 } 606 607 /* set the inodes dtime */ 608 status = ocfs2_journal_access(handle, inode, di_bh, 609 OCFS2_JOURNAL_ACCESS_WRITE); 610 if (status < 0) { 611 mlog_errno(status); 612 goto bail_commit; 613 } 614 615 di->i_dtime = cpu_to_le64(CURRENT_TIME.tv_sec); 616 le32_and_cpu(&di->i_flags, ~(OCFS2_VALID_FL | OCFS2_ORPHANED_FL)); 617 618 status = ocfs2_journal_dirty(handle, di_bh); 619 if (status < 0) { 620 mlog_errno(status); 621 goto bail_commit; 622 } 623 624 ocfs2_remove_from_cache(inode, di_bh); 625 626 status = ocfs2_free_dinode(handle, inode_alloc_inode, 627 inode_alloc_bh, di); 628 if (status < 0) 629 mlog_errno(status); 630 631 bail_commit: 632 ocfs2_commit_trans(osb, handle); 633 bail_unlock: 634 ocfs2_meta_unlock(inode_alloc_inode, 1); 635 mutex_unlock(&inode_alloc_inode->i_mutex); 636 brelse(inode_alloc_bh); 637 bail: 638 iput(inode_alloc_inode); 639 640 return status; 641 } 642 643 /* 644 * Serialize with orphan dir recovery. If the process doing 645 * recovery on this orphan dir does an iget() with the dir 646 * i_mutex held, we'll deadlock here. Instead we detect this 647 * and exit early - recovery will wipe this inode for us. 648 */ 649 static int ocfs2_check_orphan_recovery_state(struct ocfs2_super *osb, 650 int slot) 651 { 652 int ret = 0; 653 654 spin_lock(&osb->osb_lock); 655 if (ocfs2_node_map_test_bit(osb, &osb->osb_recovering_orphan_dirs, slot)) { 656 mlog(0, "Recovery is happening on orphan dir %d, will skip " 657 "this inode\n", slot); 658 ret = -EDEADLK; 659 goto out; 660 } 661 /* This signals to the orphan recovery process that it should 662 * wait for us to handle the wipe. */ 663 osb->osb_orphan_wipes[slot]++; 664 out: 665 spin_unlock(&osb->osb_lock); 666 return ret; 667 } 668 669 static void ocfs2_signal_wipe_completion(struct ocfs2_super *osb, 670 int slot) 671 { 672 spin_lock(&osb->osb_lock); 673 osb->osb_orphan_wipes[slot]--; 674 spin_unlock(&osb->osb_lock); 675 676 wake_up(&osb->osb_wipe_event); 677 } 678 679 static int ocfs2_wipe_inode(struct inode *inode, 680 struct buffer_head *di_bh) 681 { 682 int status, orphaned_slot; 683 struct inode *orphan_dir_inode = NULL; 684 struct buffer_head *orphan_dir_bh = NULL; 685 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); 686 struct ocfs2_dinode *di; 687 688 di = (struct ocfs2_dinode *) di_bh->b_data; 689 orphaned_slot = le16_to_cpu(di->i_orphaned_slot); 690 691 status = ocfs2_check_orphan_recovery_state(osb, orphaned_slot); 692 if (status) 693 return status; 694 695 orphan_dir_inode = ocfs2_get_system_file_inode(osb, 696 ORPHAN_DIR_SYSTEM_INODE, 697 orphaned_slot); 698 if (!orphan_dir_inode) { 699 status = -EEXIST; 700 mlog_errno(status); 701 goto bail; 702 } 703 704 /* Lock the orphan dir. The lock will be held for the entire 705 * delete_inode operation. We do this now to avoid races with 706 * recovery completion on other nodes. */ 707 mutex_lock(&orphan_dir_inode->i_mutex); 708 status = ocfs2_meta_lock(orphan_dir_inode, &orphan_dir_bh, 1); 709 if (status < 0) { 710 mutex_unlock(&orphan_dir_inode->i_mutex); 711 712 mlog_errno(status); 713 goto bail; 714 } 715 716 /* we do this while holding the orphan dir lock because we 717 * don't want recovery being run from another node to vote for 718 * an inode delete on us -- this will result in two nodes 719 * truncating the same file! */ 720 status = ocfs2_truncate_for_delete(osb, inode, di_bh); 721 if (status < 0) { 722 mlog_errno(status); 723 goto bail_unlock_dir; 724 } 725 726 status = ocfs2_remove_inode(inode, di_bh, orphan_dir_inode, 727 orphan_dir_bh); 728 if (status < 0) 729 mlog_errno(status); 730 731 bail_unlock_dir: 732 ocfs2_meta_unlock(orphan_dir_inode, 1); 733 mutex_unlock(&orphan_dir_inode->i_mutex); 734 brelse(orphan_dir_bh); 735 bail: 736 iput(orphan_dir_inode); 737 ocfs2_signal_wipe_completion(osb, orphaned_slot); 738 739 return status; 740 } 741 742 /* There is a series of simple checks that should be done before a 743 * vote is even considered. Encapsulate those in this function. */ 744 static int ocfs2_inode_is_valid_to_delete(struct inode *inode) 745 { 746 int ret = 0; 747 struct ocfs2_inode_info *oi = OCFS2_I(inode); 748 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); 749 750 /* We shouldn't be getting here for the root directory 751 * inode.. */ 752 if (inode == osb->root_inode) { 753 mlog(ML_ERROR, "Skipping delete of root inode.\n"); 754 goto bail; 755 } 756 757 /* If we're coming from process_vote we can't go into our own 758 * voting [hello, deadlock city!], so unforuntately we just 759 * have to skip deleting this guy. That's OK though because 760 * the node who's doing the actual deleting should handle it 761 * anyway. */ 762 if (current == osb->vote_task) { 763 mlog(0, "Skipping delete of %lu because we're currently " 764 "in process_vote\n", inode->i_ino); 765 goto bail; 766 } 767 768 spin_lock(&oi->ip_lock); 769 /* OCFS2 *never* deletes system files. This should technically 770 * never get here as system file inodes should always have a 771 * positive link count. */ 772 if (oi->ip_flags & OCFS2_INODE_SYSTEM_FILE) { 773 mlog(ML_ERROR, "Skipping delete of system file %llu\n", 774 (unsigned long long)oi->ip_blkno); 775 goto bail_unlock; 776 } 777 778 /* If we have voted "yes" on the wipe of this inode for 779 * another node, it will be marked here so we can safely skip 780 * it. Recovery will cleanup any inodes we might inadvertantly 781 * skip here. */ 782 if (oi->ip_flags & OCFS2_INODE_SKIP_DELETE) { 783 mlog(0, "Skipping delete of %lu because another node " 784 "has done this for us.\n", inode->i_ino); 785 goto bail_unlock; 786 } 787 788 ret = 1; 789 bail_unlock: 790 spin_unlock(&oi->ip_lock); 791 bail: 792 return ret; 793 } 794 795 /* Query the cluster to determine whether we should wipe an inode from 796 * disk or not. 797 * 798 * Requires the inode to have the cluster lock. */ 799 static int ocfs2_query_inode_wipe(struct inode *inode, 800 struct buffer_head *di_bh, 801 int *wipe) 802 { 803 int status = 0; 804 struct ocfs2_inode_info *oi = OCFS2_I(inode); 805 struct ocfs2_dinode *di; 806 807 *wipe = 0; 808 809 /* While we were waiting for the cluster lock in 810 * ocfs2_delete_inode, another node might have asked to delete 811 * the inode. Recheck our flags to catch this. */ 812 if (!ocfs2_inode_is_valid_to_delete(inode)) { 813 mlog(0, "Skipping delete of %llu because flags changed\n", 814 (unsigned long long)oi->ip_blkno); 815 goto bail; 816 } 817 818 /* Now that we have an up to date inode, we can double check 819 * the link count. */ 820 if (inode->i_nlink) { 821 mlog(0, "Skipping delete of %llu because nlink = %u\n", 822 (unsigned long long)oi->ip_blkno, inode->i_nlink); 823 goto bail; 824 } 825 826 /* Do some basic inode verification... */ 827 di = (struct ocfs2_dinode *) di_bh->b_data; 828 if (!(di->i_flags & cpu_to_le32(OCFS2_ORPHANED_FL))) { 829 /* for lack of a better error? */ 830 status = -EEXIST; 831 mlog(ML_ERROR, 832 "Inode %llu (on-disk %llu) not orphaned! " 833 "Disk flags 0x%x, inode flags 0x%x\n", 834 (unsigned long long)oi->ip_blkno, 835 (unsigned long long)le64_to_cpu(di->i_blkno), 836 le32_to_cpu(di->i_flags), oi->ip_flags); 837 goto bail; 838 } 839 840 /* has someone already deleted us?! baaad... */ 841 if (di->i_dtime) { 842 status = -EEXIST; 843 mlog_errno(status); 844 goto bail; 845 } 846 847 /* 848 * This is how ocfs2 determines whether an inode is still live 849 * within the cluster. Every node takes a shared read lock on 850 * the inode open lock in ocfs2_read_locked_inode(). When we 851 * get to ->delete_inode(), each node tries to convert it's 852 * lock to an exclusive. Trylocks are serialized by the inode 853 * meta data lock. If the upconvert suceeds, we know the inode 854 * is no longer live and can be deleted. 855 * 856 * Though we call this with the meta data lock held, the 857 * trylock keeps us from ABBA deadlock. 858 */ 859 status = ocfs2_try_open_lock(inode, 1); 860 if (status == -EAGAIN) { 861 status = 0; 862 mlog(0, "Skipping delete of %llu because it is in use on" 863 "other nodes\n", (unsigned long long)oi->ip_blkno); 864 goto bail; 865 } 866 if (status < 0) { 867 mlog_errno(status); 868 goto bail; 869 } 870 871 *wipe = 1; 872 mlog(0, "Inode %llu is ok to wipe from orphan dir %u\n", 873 (unsigned long long)oi->ip_blkno, 874 le16_to_cpu(di->i_orphaned_slot)); 875 876 bail: 877 return status; 878 } 879 880 /* Support function for ocfs2_delete_inode. Will help us keep the 881 * inode data in a consistent state for clear_inode. Always truncates 882 * pages, optionally sync's them first. */ 883 static void ocfs2_cleanup_delete_inode(struct inode *inode, 884 int sync_data) 885 { 886 mlog(0, "Cleanup inode %llu, sync = %d\n", 887 (unsigned long long)OCFS2_I(inode)->ip_blkno, sync_data); 888 if (sync_data) 889 write_inode_now(inode, 1); 890 truncate_inode_pages(&inode->i_data, 0); 891 } 892 893 void ocfs2_delete_inode(struct inode *inode) 894 { 895 int wipe, status; 896 sigset_t blocked, oldset; 897 struct buffer_head *di_bh = NULL; 898 899 mlog_entry("(inode->i_ino = %lu)\n", inode->i_ino); 900 901 if (is_bad_inode(inode)) { 902 mlog(0, "Skipping delete of bad inode\n"); 903 goto bail; 904 } 905 906 if (!ocfs2_inode_is_valid_to_delete(inode)) { 907 /* It's probably not necessary to truncate_inode_pages 908 * here but we do it for safety anyway (it will most 909 * likely be a no-op anyway) */ 910 ocfs2_cleanup_delete_inode(inode, 0); 911 goto bail; 912 } 913 914 /* We want to block signals in delete_inode as the lock and 915 * messaging paths may return us -ERESTARTSYS. Which would 916 * cause us to exit early, resulting in inodes being orphaned 917 * forever. */ 918 sigfillset(&blocked); 919 status = sigprocmask(SIG_BLOCK, &blocked, &oldset); 920 if (status < 0) { 921 mlog_errno(status); 922 ocfs2_cleanup_delete_inode(inode, 1); 923 goto bail; 924 } 925 926 /* Lock down the inode. This gives us an up to date view of 927 * it's metadata (for verification), and allows us to 928 * serialize delete_inode votes. 929 * 930 * Even though we might be doing a truncate, we don't take the 931 * allocation lock here as it won't be needed - nobody will 932 * have the file open. 933 */ 934 status = ocfs2_meta_lock(inode, &di_bh, 1); 935 if (status < 0) { 936 if (status != -ENOENT) 937 mlog_errno(status); 938 ocfs2_cleanup_delete_inode(inode, 0); 939 goto bail_unblock; 940 } 941 942 /* Query the cluster. This will be the final decision made 943 * before we go ahead and wipe the inode. */ 944 status = ocfs2_query_inode_wipe(inode, di_bh, &wipe); 945 if (!wipe || status < 0) { 946 /* Error and inode busy vote both mean we won't be 947 * removing the inode, so they take almost the same 948 * path. */ 949 if (status < 0) 950 mlog_errno(status); 951 952 /* Someone in the cluster has voted to not wipe this 953 * inode, or it was never completely orphaned. Write 954 * out the pages and exit now. */ 955 ocfs2_cleanup_delete_inode(inode, 1); 956 goto bail_unlock_inode; 957 } 958 959 ocfs2_cleanup_delete_inode(inode, 0); 960 961 status = ocfs2_wipe_inode(inode, di_bh); 962 if (status < 0) { 963 if (status != -EDEADLK) 964 mlog_errno(status); 965 goto bail_unlock_inode; 966 } 967 968 /* 969 * Mark the inode as successfully deleted. 970 * 971 * This is important for ocfs2_clear_inode() as it will check 972 * this flag and skip any checkpointing work 973 * 974 * ocfs2_stuff_meta_lvb() also uses this flag to invalidate 975 * the LVB for other nodes. 976 */ 977 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_DELETED; 978 979 bail_unlock_inode: 980 ocfs2_meta_unlock(inode, 1); 981 brelse(di_bh); 982 bail_unblock: 983 status = sigprocmask(SIG_SETMASK, &oldset, NULL); 984 if (status < 0) 985 mlog_errno(status); 986 bail: 987 clear_inode(inode); 988 mlog_exit_void(); 989 } 990 991 void ocfs2_clear_inode(struct inode *inode) 992 { 993 int status; 994 struct ocfs2_inode_info *oi = OCFS2_I(inode); 995 996 mlog_entry_void(); 997 998 if (!inode) 999 goto bail; 1000 1001 mlog(0, "Clearing inode: %llu, nlink = %u\n", 1002 (unsigned long long)OCFS2_I(inode)->ip_blkno, inode->i_nlink); 1003 1004 mlog_bug_on_msg(OCFS2_SB(inode->i_sb) == NULL, 1005 "Inode=%lu\n", inode->i_ino); 1006 1007 /* For remove delete_inode vote, we hold open lock before, 1008 * now it is time to unlock PR and EX open locks. */ 1009 ocfs2_open_unlock(inode); 1010 1011 /* Do these before all the other work so that we don't bounce 1012 * the vote thread while waiting to destroy the locks. */ 1013 ocfs2_mark_lockres_freeing(&oi->ip_rw_lockres); 1014 ocfs2_mark_lockres_freeing(&oi->ip_meta_lockres); 1015 ocfs2_mark_lockres_freeing(&oi->ip_data_lockres); 1016 ocfs2_mark_lockres_freeing(&oi->ip_open_lockres); 1017 1018 /* We very well may get a clear_inode before all an inodes 1019 * metadata has hit disk. Of course, we can't drop any cluster 1020 * locks until the journal has finished with it. The only 1021 * exception here are successfully wiped inodes - their 1022 * metadata can now be considered to be part of the system 1023 * inodes from which it came. */ 1024 if (!(OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED)) 1025 ocfs2_checkpoint_inode(inode); 1026 1027 mlog_bug_on_msg(!list_empty(&oi->ip_io_markers), 1028 "Clear inode of %llu, inode has io markers\n", 1029 (unsigned long long)oi->ip_blkno); 1030 1031 ocfs2_extent_map_trunc(inode, 0); 1032 1033 status = ocfs2_drop_inode_locks(inode); 1034 if (status < 0) 1035 mlog_errno(status); 1036 1037 ocfs2_lock_res_free(&oi->ip_rw_lockres); 1038 ocfs2_lock_res_free(&oi->ip_meta_lockres); 1039 ocfs2_lock_res_free(&oi->ip_data_lockres); 1040 ocfs2_lock_res_free(&oi->ip_open_lockres); 1041 1042 ocfs2_metadata_cache_purge(inode); 1043 1044 mlog_bug_on_msg(oi->ip_metadata_cache.ci_num_cached, 1045 "Clear inode of %llu, inode has %u cache items\n", 1046 (unsigned long long)oi->ip_blkno, oi->ip_metadata_cache.ci_num_cached); 1047 1048 mlog_bug_on_msg(!(oi->ip_flags & OCFS2_INODE_CACHE_INLINE), 1049 "Clear inode of %llu, inode has a bad flag\n", 1050 (unsigned long long)oi->ip_blkno); 1051 1052 mlog_bug_on_msg(spin_is_locked(&oi->ip_lock), 1053 "Clear inode of %llu, inode is locked\n", 1054 (unsigned long long)oi->ip_blkno); 1055 1056 mlog_bug_on_msg(!mutex_trylock(&oi->ip_io_mutex), 1057 "Clear inode of %llu, io_mutex is locked\n", 1058 (unsigned long long)oi->ip_blkno); 1059 mutex_unlock(&oi->ip_io_mutex); 1060 1061 /* 1062 * down_trylock() returns 0, down_write_trylock() returns 1 1063 * kernel 1, world 0 1064 */ 1065 mlog_bug_on_msg(!down_write_trylock(&oi->ip_alloc_sem), 1066 "Clear inode of %llu, alloc_sem is locked\n", 1067 (unsigned long long)oi->ip_blkno); 1068 up_write(&oi->ip_alloc_sem); 1069 1070 mlog_bug_on_msg(oi->ip_open_count, 1071 "Clear inode of %llu has open count %d\n", 1072 (unsigned long long)oi->ip_blkno, oi->ip_open_count); 1073 1074 /* Clear all other flags. */ 1075 oi->ip_flags = OCFS2_INODE_CACHE_INLINE; 1076 oi->ip_created_trans = 0; 1077 oi->ip_last_trans = 0; 1078 oi->ip_dir_start_lookup = 0; 1079 oi->ip_blkno = 0ULL; 1080 1081 bail: 1082 mlog_exit_void(); 1083 } 1084 1085 /* Called under inode_lock, with no more references on the 1086 * struct inode, so it's safe here to check the flags field 1087 * and to manipulate i_nlink without any other locks. */ 1088 void ocfs2_drop_inode(struct inode *inode) 1089 { 1090 struct ocfs2_inode_info *oi = OCFS2_I(inode); 1091 1092 mlog_entry_void(); 1093 1094 mlog(0, "Drop inode %llu, nlink = %u, ip_flags = 0x%x\n", 1095 (unsigned long long)oi->ip_blkno, inode->i_nlink, oi->ip_flags); 1096 1097 if (oi->ip_flags & OCFS2_INODE_MAYBE_ORPHANED) 1098 generic_delete_inode(inode); 1099 else 1100 generic_drop_inode(inode); 1101 1102 mlog_exit_void(); 1103 } 1104 1105 /* 1106 * TODO: this should probably be merged into ocfs2_get_block 1107 * 1108 * However, you now need to pay attention to the cont_prepare_write() 1109 * stuff in ocfs2_get_block (that is, ocfs2_get_block pretty much 1110 * expects never to extend). 1111 */ 1112 struct buffer_head *ocfs2_bread(struct inode *inode, 1113 int block, int *err, int reada) 1114 { 1115 struct buffer_head *bh = NULL; 1116 int tmperr; 1117 u64 p_blkno; 1118 int readflags = OCFS2_BH_CACHED; 1119 1120 if (reada) 1121 readflags |= OCFS2_BH_READAHEAD; 1122 1123 if (((u64)block << inode->i_sb->s_blocksize_bits) >= 1124 i_size_read(inode)) { 1125 BUG_ON(!reada); 1126 return NULL; 1127 } 1128 1129 down_read(&OCFS2_I(inode)->ip_alloc_sem); 1130 tmperr = ocfs2_extent_map_get_blocks(inode, block, &p_blkno, NULL, 1131 NULL); 1132 up_read(&OCFS2_I(inode)->ip_alloc_sem); 1133 if (tmperr < 0) { 1134 mlog_errno(tmperr); 1135 goto fail; 1136 } 1137 1138 tmperr = ocfs2_read_block(OCFS2_SB(inode->i_sb), p_blkno, &bh, 1139 readflags, inode); 1140 if (tmperr < 0) 1141 goto fail; 1142 1143 tmperr = 0; 1144 1145 *err = 0; 1146 return bh; 1147 1148 fail: 1149 if (bh) { 1150 brelse(bh); 1151 bh = NULL; 1152 } 1153 *err = -EIO; 1154 return NULL; 1155 } 1156 1157 /* 1158 * This is called from our getattr. 1159 */ 1160 int ocfs2_inode_revalidate(struct dentry *dentry) 1161 { 1162 struct inode *inode = dentry->d_inode; 1163 int status = 0; 1164 1165 mlog_entry("(inode = 0x%p, ino = %llu)\n", inode, 1166 inode ? (unsigned long long)OCFS2_I(inode)->ip_blkno : 0ULL); 1167 1168 if (!inode) { 1169 mlog(0, "eep, no inode!\n"); 1170 status = -ENOENT; 1171 goto bail; 1172 } 1173 1174 spin_lock(&OCFS2_I(inode)->ip_lock); 1175 if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED) { 1176 spin_unlock(&OCFS2_I(inode)->ip_lock); 1177 mlog(0, "inode deleted!\n"); 1178 status = -ENOENT; 1179 goto bail; 1180 } 1181 spin_unlock(&OCFS2_I(inode)->ip_lock); 1182 1183 /* Let ocfs2_meta_lock do the work of updating our struct 1184 * inode for us. */ 1185 status = ocfs2_meta_lock(inode, NULL, 0); 1186 if (status < 0) { 1187 if (status != -ENOENT) 1188 mlog_errno(status); 1189 goto bail; 1190 } 1191 ocfs2_meta_unlock(inode, 0); 1192 bail: 1193 mlog_exit(status); 1194 1195 return status; 1196 } 1197 1198 /* 1199 * Updates a disk inode from a 1200 * struct inode. 1201 * Only takes ip_lock. 1202 */ 1203 int ocfs2_mark_inode_dirty(handle_t *handle, 1204 struct inode *inode, 1205 struct buffer_head *bh) 1206 { 1207 int status; 1208 struct ocfs2_dinode *fe = (struct ocfs2_dinode *) bh->b_data; 1209 1210 mlog_entry("(inode %llu)\n", 1211 (unsigned long long)OCFS2_I(inode)->ip_blkno); 1212 1213 status = ocfs2_journal_access(handle, inode, bh, 1214 OCFS2_JOURNAL_ACCESS_WRITE); 1215 if (status < 0) { 1216 mlog_errno(status); 1217 goto leave; 1218 } 1219 1220 spin_lock(&OCFS2_I(inode)->ip_lock); 1221 fe->i_clusters = cpu_to_le32(OCFS2_I(inode)->ip_clusters); 1222 ocfs2_get_inode_flags(OCFS2_I(inode)); 1223 fe->i_attr = cpu_to_le32(OCFS2_I(inode)->ip_attr); 1224 spin_unlock(&OCFS2_I(inode)->ip_lock); 1225 1226 fe->i_size = cpu_to_le64(i_size_read(inode)); 1227 fe->i_links_count = cpu_to_le16(inode->i_nlink); 1228 fe->i_uid = cpu_to_le32(inode->i_uid); 1229 fe->i_gid = cpu_to_le32(inode->i_gid); 1230 fe->i_mode = cpu_to_le16(inode->i_mode); 1231 fe->i_atime = cpu_to_le64(inode->i_atime.tv_sec); 1232 fe->i_atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec); 1233 fe->i_ctime = cpu_to_le64(inode->i_ctime.tv_sec); 1234 fe->i_ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); 1235 fe->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec); 1236 fe->i_mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); 1237 1238 status = ocfs2_journal_dirty(handle, bh); 1239 if (status < 0) 1240 mlog_errno(status); 1241 1242 status = 0; 1243 leave: 1244 1245 mlog_exit(status); 1246 return status; 1247 } 1248 1249 /* 1250 * 1251 * Updates a struct inode from a disk inode. 1252 * does no i/o, only takes ip_lock. 1253 */ 1254 void ocfs2_refresh_inode(struct inode *inode, 1255 struct ocfs2_dinode *fe) 1256 { 1257 spin_lock(&OCFS2_I(inode)->ip_lock); 1258 1259 OCFS2_I(inode)->ip_clusters = le32_to_cpu(fe->i_clusters); 1260 OCFS2_I(inode)->ip_attr = le32_to_cpu(fe->i_attr); 1261 ocfs2_set_inode_flags(inode); 1262 i_size_write(inode, le64_to_cpu(fe->i_size)); 1263 inode->i_nlink = le16_to_cpu(fe->i_links_count); 1264 inode->i_uid = le32_to_cpu(fe->i_uid); 1265 inode->i_gid = le32_to_cpu(fe->i_gid); 1266 inode->i_mode = le16_to_cpu(fe->i_mode); 1267 if (S_ISLNK(inode->i_mode) && le32_to_cpu(fe->i_clusters) == 0) 1268 inode->i_blocks = 0; 1269 else 1270 inode->i_blocks = ocfs2_inode_sector_count(inode); 1271 inode->i_atime.tv_sec = le64_to_cpu(fe->i_atime); 1272 inode->i_atime.tv_nsec = le32_to_cpu(fe->i_atime_nsec); 1273 inode->i_mtime.tv_sec = le64_to_cpu(fe->i_mtime); 1274 inode->i_mtime.tv_nsec = le32_to_cpu(fe->i_mtime_nsec); 1275 inode->i_ctime.tv_sec = le64_to_cpu(fe->i_ctime); 1276 inode->i_ctime.tv_nsec = le32_to_cpu(fe->i_ctime_nsec); 1277 1278 spin_unlock(&OCFS2_I(inode)->ip_lock); 1279 } 1280