Received: by 10.192.165.148 with SMTP id m20csp4625802imm; Tue, 8 May 2018 11:26:43 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqBopBIzarAjnDHkElDp7fmLELtMsr911ITxvthAAMbAvsaNIlrUeq9tpVKzG7rV2ra6xen X-Received: by 2002:a17:902:7615:: with SMTP id k21-v6mr27730775pll.97.1525804003113; Tue, 08 May 2018 11:26:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525804003; cv=none; d=google.com; s=arc-20160816; b=MaTYH8ZZYzucAd1SgGM1c82ph7ic12E31ExRaBaiOd2PzkZtN0VfptXe+937qKplFe altixVMrnfep++bYDmMB2GjXnNn3MfY3eLbXCMQTBh0Z+cI2/oG53nnso+kVWRX3Yf0j 0Ajd9NtEgToCFau7nSmRJ/wpQ9W8Vr7YbP2YHoN/hPmw3B4poKyM2RLo+Q9pbhVa5JEk lcwPgELEcafYXqIWZwjunUlLg8dKon//IscNx/Tm50LJDvA5fQLNWyrJ9RRh//wJm3Lx QYMvzPXbhgyVedRRaRgVBfskmCdcMkip55qP+X5Mmbr/0Zyc++Sjsr36zeXJXwXD6/Oc oJMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=5Zjd0+8x1bGFNMn+zXp6EdFkrPPAW5ne6WKEM4B336Q=; b=U7UjxcunkktJbbsx648hP8PyU9Ru4JRP7W2LbpfUTeXJ2gq/nCoDy7ROnTfAMO/fIq OnQFVbhAcppdXvQ1koMo2rrzUB1kx8rWn6HrDFZARh4eqvI9MxFPDUxMXoygzrZsV3T/ UBfBdOc0JnUAkYPyt6y8T0JS1Ky+lp744Bung/Pvw87WkGX+28+knMdg4aMU2VqJykZv kaS+yvi9YwSjCY5ZcCXnExayKT2/YyUflwSItcF8ou2SmAaNyiwMXEtnEdQF/sDxOv8o FP0ZAs+JQY32DPUXMQjkmWsZFOP/sLrh3AaVTtlhV/Sk1w6UuvFZozRvLLmv4EVgmQlk 5Gzg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z11si8307596pfm.330.2018.05.08.11.26.27; Tue, 08 May 2018 11:26:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933273AbeEHSY0 (ORCPT + 99 others); Tue, 8 May 2018 14:24:26 -0400 Received: from mx2.suse.de ([195.135.220.15]:54041 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755211AbeEHSGH (ORCPT ); Tue, 8 May 2018 14:06:07 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 8C39CAD4A; Tue, 8 May 2018 18:06:05 +0000 (UTC) From: Mark Fasheh To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, Mark Fasheh Subject: [PATCH 54/76] fs/ocfs2: Use inode_sb() helper instead of inode->i_sb Date: Tue, 8 May 2018 11:04:14 -0700 Message-Id: <20180508180436.716-55-mfasheh@suse.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180508180436.716-1-mfasheh@suse.de> References: <20180508180436.716-1-mfasheh@suse.de> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Mark Fasheh --- fs/ocfs2/acl.c | 10 +- fs/ocfs2/alloc.c | 47 +++---- fs/ocfs2/aops.c | 85 ++++++------ fs/ocfs2/dcache.c | 2 +- fs/ocfs2/dir.c | 127 +++++++++--------- fs/ocfs2/dlmfs/dlmfs.c | 2 +- fs/ocfs2/dlmglue.c | 62 ++++----- fs/ocfs2/export.c | 2 +- fs/ocfs2/extent_map.c | 48 +++---- fs/ocfs2/file.c | 93 ++++++------- fs/ocfs2/inode.c | 30 ++--- fs/ocfs2/inode.h | 2 +- fs/ocfs2/ioctl.c | 22 ++-- fs/ocfs2/journal.c | 5 +- fs/ocfs2/journal.h | 4 +- fs/ocfs2/localalloc.c | 2 +- fs/ocfs2/locks.c | 4 +- fs/ocfs2/mmap.c | 4 +- fs/ocfs2/move_extents.c | 47 +++---- fs/ocfs2/namei.c | 24 ++-- fs/ocfs2/ocfs2.h | 2 +- fs/ocfs2/quota_global.c | 2 +- fs/ocfs2/quota_local.c | 12 +- fs/ocfs2/refcounttree.c | 117 +++++++++-------- fs/ocfs2/resize.c | 27 ++-- fs/ocfs2/slot_map.c | 2 +- fs/ocfs2/suballoc.c | 71 +++++----- fs/ocfs2/suballoc.h | 2 +- fs/ocfs2/symlink.c | 2 +- fs/ocfs2/xattr.c | 339 ++++++++++++++++++++++++------------------------ 30 files changed, 620 insertions(+), 578 deletions(-) diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c index 917fadca8a7b..20bd414b4cfd 100644 --- a/fs/ocfs2/acl.c +++ b/fs/ocfs2/acl.c @@ -181,7 +181,7 @@ static int ocfs2_acl_set_mode(struct inode *inode, struct buffer_head *di_bh, get_bh(di_bh); if (handle == NULL) { - handle = ocfs2_start_trans(OCFS2_SB(inode->i_sb), + handle = ocfs2_start_trans(OCFS2_SB(inode_sb(inode)), OCFS2_INODE_UPDATE_CREDITS); if (IS_ERR(handle)) { ret = PTR_ERR(handle); @@ -211,7 +211,7 @@ static int ocfs2_acl_set_mode(struct inode *inode, struct buffer_head *di_bh, out_commit: if (commit_handle) - ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(inode)), handle); out_brelse: brelse(di_bh); out: @@ -303,7 +303,7 @@ struct posix_acl *ocfs2_iop_get_acl(struct inode *inode, int type) int had_lock; struct ocfs2_lock_holder oh; - osb = OCFS2_SB(inode->i_sb); + osb = OCFS2_SB(inode_sb(inode)); if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) return NULL; @@ -322,7 +322,7 @@ struct posix_acl *ocfs2_iop_get_acl(struct inode *inode, int type) int ocfs2_acl_chmod(struct inode *inode, struct buffer_head *bh) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct posix_acl *acl; int ret; @@ -358,7 +358,7 @@ int ocfs2_init_acl(handle_t *handle, struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *data_ac) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct posix_acl *acl = NULL; int ret = 0, ret2; umode_t mode; diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c index 9a876bb07cac..10fd4f40d202 100644 --- a/fs/ocfs2/alloc.c +++ b/fs/ocfs2/alloc.c @@ -232,7 +232,7 @@ static int ocfs2_dinode_insert_check(struct ocfs2_extent_tree *et, struct ocfs2_extent_rec *rec) { struct ocfs2_inode_info *oi = cache_info_to_inode(et->et_ci); - struct ocfs2_super *osb = OCFS2_SB(oi->vfs_inode.i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(&oi->vfs_inode)); BUG_ON(oi->ip_dyn_features & OCFS2_INLINE_DATA_FL); mlog_bug_on_msg(!ocfs2_sparse_alloc(osb) && @@ -5275,8 +5275,9 @@ int ocfs2_mark_extent_written(struct inode *inode, (unsigned long long)OCFS2_I(inode)->ip_blkno, cpos, len, phys); - if (!ocfs2_writes_unwritten_extents(OCFS2_SB(inode->i_sb))) { - ocfs2_error(inode->i_sb, "Inode %llu has unwritten extents that are being written to, but the feature bit is not set in the super block\n", + if (!ocfs2_writes_unwritten_extents(OCFS2_SB(inode_sb(inode)))) { + ocfs2_error(inode_sb(inode), + "Inode %llu has unwritten extents that are being written to, but the feature bit is not set in the super block\n", (unsigned long long)OCFS2_I(inode)->ip_blkno); ret = -EROFS; goto out; @@ -5687,7 +5688,7 @@ static int ocfs2_reserve_blocks_for_rec_trunc(struct inode *inode, { int ret = 0, num_free_extents; unsigned int max_recs_needed = 2 * extents_to_split; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); *ac = NULL; @@ -5729,8 +5730,8 @@ int ocfs2_remove_btree_range(struct inode *inode, u64 refcount_loc, bool refcount_tree_locked) { int ret, credits = 0, extra_blocks = 0; - u64 phys_blkno = ocfs2_clusters_to_blocks(inode->i_sb, phys_cpos); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + u64 phys_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), phys_cpos); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *tl_inode = osb->osb_tl_inode; handle_t *handle; struct ocfs2_alloc_context *meta_ac = NULL; @@ -5793,7 +5794,7 @@ int ocfs2_remove_btree_range(struct inode *inode, } dquot_free_space_nodirty(inode, - ocfs2_clusters_to_bytes(inode->i_sb, len)); + ocfs2_clusters_to_bytes(inode_sb(inode), len)); ret = ocfs2_remove_extent(handle, et, cpos, len, meta_ac, dealloc); if (ret) { @@ -5984,8 +5985,8 @@ static int ocfs2_replay_truncate_records(struct ocfs2_super *osb, ocfs2_journal_dirty(handle, tl_bh); rec = tl->tl_recs[i]; - start_blk = ocfs2_clusters_to_blocks(data_alloc_inode->i_sb, - le32_to_cpu(rec.t_start)); + start_blk = ocfs2_clusters_to_blocks(inode_sb(data_alloc_inode), + le32_to_cpu(rec.t_start)); num_clusters = le32_to_cpu(rec.t_clusters); /* if start_blk is not set, we ignore the record as @@ -6861,7 +6862,7 @@ static void ocfs2_zero_cluster_pages(struct inode *inode, loff_t start, int i; struct page *page; unsigned int from, to = PAGE_SIZE; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); BUG_ON(!ocfs2_sparse_alloc(OCFS2_SB(sb))); @@ -6929,7 +6930,7 @@ int ocfs2_grab_pages(struct inode *inode, loff_t start, loff_t end, static int ocfs2_grab_eof_pages(struct inode *inode, loff_t start, loff_t end, struct page **pages, int *num) { - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); BUG_ON(start >> OCFS2_SB(sb)->s_clustersize_bits != (end - 1) >> OCFS2_SB(sb)->s_clustersize_bits); @@ -6953,7 +6954,7 @@ int ocfs2_zero_range_for_truncate(struct inode *inode, handle_t *handle, struct page **pages = NULL; u64 phys; unsigned int ext_flags; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); /* * File systems which don't support sparse files zero on every @@ -7017,7 +7018,7 @@ int ocfs2_zero_range_for_truncate(struct inode *inode, handle_t *handle, static void ocfs2_zero_dinode_id2_with_xattr(struct inode *inode, struct ocfs2_dinode *di) { - unsigned int blocksize = 1 << inode->i_sb->s_blocksize_bits; + unsigned int blocksize = 1 << inode_sb(inode)->s_blocksize_bits; unsigned int xattrsize = le16_to_cpu(di->i_xattr_inline_size); if (le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_XATTR_FL) @@ -7036,7 +7037,7 @@ void ocfs2_dinode_new_extent_list(struct inode *inode, di->id2.i_list.l_tree_depth = 0; di->id2.i_list.l_next_free_rec = 0; di->id2.i_list.l_count = cpu_to_le16( - ocfs2_extent_recs_per_inode_with_xattr(inode->i_sb, di)); + ocfs2_extent_recs_per_inode_with_xattr(inode_sb(inode), di)); } void ocfs2_set_inode_data_inline(struct inode *inode, struct ocfs2_dinode *di) @@ -7056,7 +7057,7 @@ void ocfs2_set_inode_data_inline(struct inode *inode, struct ocfs2_dinode *di) ocfs2_zero_dinode_id2_with_xattr(inode, di); idata->id_count = cpu_to_le16( - ocfs2_max_inline_data_with_xattr(inode->i_sb, di)); + ocfs2_max_inline_data_with_xattr(inode_sb(inode), di)); } int ocfs2_convert_inline_data_to_extents(struct inode *inode, @@ -7068,7 +7069,7 @@ int ocfs2_convert_inline_data_to_extents(struct inode *inode, handle_t *handle; u64 uninitialized_var(block); struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_alloc_context *data_ac = NULL; struct page **pages = NULL; @@ -7132,7 +7133,8 @@ int ocfs2_convert_inline_data_to_extents(struct inode *inode, * Save two copies, one for insert, and one that can * be changed by ocfs2_map_and_dirty_page() below. */ - block = phys = ocfs2_clusters_to_blocks(inode->i_sb, bit_off); + block = phys = ocfs2_clusters_to_blocks(inode_sb(inode), + bit_off); /* * Non sparse file systems zero on extend, so no need @@ -7303,7 +7305,7 @@ int ocfs2_commit_truncate(struct ocfs2_super *osb, */ el = path_leaf_el(path); if (le16_to_cpu(el->l_next_free_rec) == 0) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %llu has empty extent block at %llu\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)path_leaf_bh(path)->b_blocknr); @@ -7355,7 +7357,8 @@ int ocfs2_commit_truncate(struct ocfs2_super *osb, trunc_len = range - new_highest_cpos; coff = new_highest_cpos - le32_to_cpu(rec->e_cpos); blkno = le64_to_cpu(rec->e_blkno) + - ocfs2_clusters_to_blocks(inode->i_sb, coff); + ocfs2_clusters_to_blocks(inode_sb(inode), + coff); } else { /* * Truncate completed, leave happily. @@ -7364,7 +7367,7 @@ int ocfs2_commit_truncate(struct ocfs2_super *osb, goto bail; } - phys_cpos = ocfs2_blocks_to_clusters(inode->i_sb, blkno); + phys_cpos = ocfs2_blocks_to_clusters(inode_sb(inode), blkno); if ((flags & OCFS2_EXT_REFCOUNTED) && trunc_len && !ref_tree) { status = ocfs2_lock_refcount_tree(osb, refcount_loc, 1, @@ -7413,7 +7416,7 @@ int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh, int ret; unsigned int numbytes; handle_t *handle; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_inline_data *idata = &di->id2.i_data; @@ -7425,7 +7428,7 @@ int ocfs2_truncate_inline(struct inode *inode, struct buffer_head *di_bh, if (!(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) || !(le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL) || !ocfs2_supports_inline_data(osb)) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inline data flags for inode %llu don't agree! Disk: 0x%x, Memory: 0x%x, Superblock: 0x%x\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, le16_to_cpu(di->i_dyn_features), diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index e8e205bf2e41..12c487fe8ddc 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -61,7 +61,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, struct ocfs2_dinode *fe = NULL; struct buffer_head *bh = NULL; struct buffer_head *buffer_cache_bh = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); void *kaddr; trace_ocfs2_symlink_get_block( @@ -70,7 +70,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, BUG_ON(ocfs2_inode_is_fast_symlink(inode)); - if ((iblock << inode->i_sb->s_blocksize_bits) > PATH_MAX + 1) { + if ((iblock << inode_sb(inode)->s_blocksize_bits) > PATH_MAX + 1) { mlog(ML_ERROR, "block offset > PATH_MAX: %llu", (unsigned long long)iblock); goto bail; @@ -83,7 +83,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, } fe = (struct ocfs2_dinode *) bh->b_data; - if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb, + if ((u64)iblock >= ocfs2_clusters_to_blocks(inode_sb(inode), le32_to_cpu(fe->i_clusters))) { err = -ENOMEM; mlog(ML_ERROR, "block offset is outside the allocated size: " @@ -123,7 +123,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, brelse(buffer_cache_bh); } - map_bh(bh_result, inode->i_sb, + map_bh(bh_result, inode_sb(inode), le64_to_cpu(fe->id2.i_list.l_recs[0].e_blkno) + iblock); err = 0; @@ -154,7 +154,7 @@ int ocfs2_get_block(struct inode *inode, sector_t iblock, unsigned int ext_flags; u64 max_blocks = bh_result->b_size >> inode->i_blkbits; u64 p_blkno, count, past_eof; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); trace_ocfs2_get_block((unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)iblock, bh_result, create); @@ -200,7 +200,7 @@ int ocfs2_get_block(struct inode *inode, sector_t iblock, /* Treat the unwritten extent as a hole for zeroing purposes. */ if (p_blkno && !(ext_flags & OCFS2_EXT_UNWRITTEN)) - map_bh(bh_result, inode->i_sb, p_blkno); + map_bh(bh_result, inode_sb(inode), p_blkno); bh_result->b_size = count << inode->i_blkbits; @@ -218,7 +218,7 @@ int ocfs2_get_block(struct inode *inode, sector_t iblock, } } - past_eof = ocfs2_blocks_for_bytes(inode->i_sb, i_size_read(inode)); + past_eof = ocfs2_blocks_for_bytes(inode_sb(inode), i_size_read(inode)); trace_ocfs2_get_block_end((unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)past_eof); @@ -240,7 +240,8 @@ int ocfs2_read_inline_data(struct inode *inode, struct page *page, struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; if (!(le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL)) { - ocfs2_error(inode->i_sb, "Inode %llu lost inline data flag\n", + ocfs2_error(inode_sb(inode), + "Inode %llu lost inline data flag\n", (unsigned long long)OCFS2_I(inode)->ip_blkno); return -EROFS; } @@ -248,8 +249,8 @@ int ocfs2_read_inline_data(struct inode *inode, struct page *page, size = i_size_read(inode); if (size > PAGE_SIZE || - size > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) { - ocfs2_error(inode->i_sb, + size > ocfs2_max_inline_data_with_xattr(inode_sb(inode), di)) { + ocfs2_error(inode_sb(inode), "Inode %llu has with inline data has bad size: %Lu\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)size); @@ -598,7 +599,7 @@ static int ocfs2_should_read_blk(struct inode *inode, struct page *page, { u64 offset = page_offset(page) + block_start; - if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) + if (ocfs2_sparse_alloc(OCFS2_SB(inode_sb(inode)))) return 1; if (i_size_read(inode) > offset) @@ -651,7 +652,7 @@ int ocfs2_map_page_blocks(struct page *page, u64 *p_blkno, set_buffer_new(bh); if (!buffer_mapped(bh)) { - map_bh(bh, inode->i_sb, *p_blkno); + map_bh(bh, inode_sb(inode), *p_blkno); clean_bdev_bh_alias(bh); } @@ -973,7 +974,7 @@ static int ocfs2_prepare_page_for_write(struct inode *inode, u64 *p_blkno, unsigned int cluster_start, cluster_end; unsigned int user_data_from = 0, user_data_to = 0; - ocfs2_figure_cluster_boundaries(OCFS2_SB(inode->i_sb), cpos, + ocfs2_figure_cluster_boundaries(OCFS2_SB(inode_sb(inode)), cpos, &cluster_start, &cluster_end); /* treat the write as new if the a hole/lseek spanned across @@ -1034,7 +1035,7 @@ static int ocfs2_prepare_page_for_write(struct inode *inode, u64 *p_blkno, * been zero'd from being read in as a hole. */ if (new && !PageUptodate(page)) - ocfs2_clear_page_regions(page, OCFS2_SB(inode->i_sb), + ocfs2_clear_page_regions(page, OCFS2_SB(inode_sb(inode)), cpos, user_data_from, user_data_to); flush_dcache_page(page); @@ -1067,8 +1068,9 @@ static int ocfs2_grab_pages_for_write(struct address_space *mapping, * last page of the write. */ if (new) { - wc->w_num_pages = ocfs2_pages_per_cluster(inode->i_sb); - start = ocfs2_align_clusters_to_page_index(inode->i_sb, cpos); + wc->w_num_pages = ocfs2_pages_per_cluster(inode_sb(inode)); + start = ocfs2_align_clusters_to_page_index(inode_sb(inode), + cpos); /* * We need the index *past* the last page we could possibly * touch. This is the page past the end of the write or @@ -1149,7 +1151,7 @@ static int ocfs2_write_cluster(struct address_space *mapping, u64 p_blkno; struct inode *inode = mapping->host; struct ocfs2_extent_tree et; - int bpc = ocfs2_clusters_to_blocks(inode->i_sb, 1); + int bpc = ocfs2_clusters_to_blocks(inode_sb(inode), 1); if (new) { u32 tmp_pos; @@ -1159,7 +1161,7 @@ static int ocfs2_write_cluster(struct address_space *mapping, * any additional semaphores or cluster locks. */ tmp_pos = cpos; - ret = ocfs2_add_inode_data(OCFS2_SB(inode->i_sb), inode, + ret = ocfs2_add_inode_data(OCFS2_SB(inode_sb(inode)), inode, &tmp_pos, 1, !clear_unwritten, wc->w_di_bh, wc->w_handle, data_ac, meta_ac, NULL); @@ -1205,9 +1207,9 @@ static int ocfs2_write_cluster(struct address_space *mapping, BUG_ON(*phys == 0); - p_blkno = ocfs2_clusters_to_blocks(inode->i_sb, *phys); + p_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), *phys); if (!should_zero) - p_blkno += (user_pos >> inode->i_sb->s_blocksize_bits) & (u64)(bpc - 1); + p_blkno += (user_pos >> inode_sb(inode)->s_blocksize_bits) & (u64)(bpc - 1); for(i = 0; i < wc->w_num_pages; i++) { int tmpret; @@ -1250,7 +1252,7 @@ static int ocfs2_write_cluster_by_desc(struct address_space *mapping, loff_t cluster_off; unsigned int local_len = len; struct ocfs2_write_cluster_desc *desc; - struct ocfs2_super *osb = OCFS2_SB(mapping->host->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(mapping->host)); for (i = 0; i < wc->w_clen; i++) { desc = &wc->w_desc[i]; @@ -1500,7 +1502,7 @@ static int ocfs2_write_begin_inline(struct address_space *mapping, struct ocfs2_write_ctxt *wc) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct page *page; handle_t *handle; struct ocfs2_dinode *di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; @@ -1604,7 +1606,7 @@ static int ocfs2_try_to_write_inline_data(struct address_space *mapping, */ di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; if (mmap_page || - end > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) + end > ocfs2_max_inline_data_with_xattr(inode_sb(inode), di)) return 0; do_inline_write: @@ -1640,7 +1642,7 @@ static int ocfs2_expand_nonsparse_inode(struct inode *inode, int ret; loff_t newsize = pos + len; - BUG_ON(ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))); + BUG_ON(ocfs2_sparse_alloc(OCFS2_SB(inode_sb(inode)))); if (newsize <= i_size_read(inode)) return 0; @@ -1652,7 +1654,8 @@ static int ocfs2_expand_nonsparse_inode(struct inode *inode, /* There is no wc if this is call from direct. */ if (wc) wc->w_first_new_cpos = - ocfs2_clusters_for_bytes(inode->i_sb, i_size_read(inode)); + ocfs2_clusters_for_bytes(inode_sb(inode), + i_size_read(inode)); return ret; } @@ -1662,7 +1665,7 @@ static int ocfs2_zero_tail(struct inode *inode, struct buffer_head *di_bh, { int ret = 0; - BUG_ON(!ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))); + BUG_ON(!ocfs2_sparse_alloc(OCFS2_SB(inode_sb(inode)))); if (pos > i_size_read(inode)) ret = ocfs2_zero_extend(inode, di_bh, pos); @@ -1678,7 +1681,7 @@ int ocfs2_write_begin_nolock(struct address_space *mapping, unsigned int clusters_to_alloc, extents_to_split, clusters_need = 0; struct ocfs2_write_ctxt *wc; struct inode *inode = mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di; struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *meta_ac = NULL; @@ -1775,7 +1778,7 @@ int ocfs2_write_begin_nolock(struct address_space *mapping, if (data_ac) data_ac->ac_resv = &OCFS2_I(inode)->ip_la_data_resv; - credits = ocfs2_calc_extend_credits(inode->i_sb, + credits = ocfs2_calc_extend_credits(inode_sb(inode), &di->id2.i_list); } else if (type == OCFS2_WRITE_DIRECT) /* direct write needs not to start trans if no extents alloc. */ @@ -1979,7 +1982,7 @@ int ocfs2_write_end_nolock(struct address_space *mapping, int i, ret; unsigned from, to, start = pos & (PAGE_SIZE - 1); struct inode *inode = mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_write_ctxt *wc = fsdata; struct ocfs2_dinode *di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; handle_t *handle = wc->w_handle; @@ -2146,14 +2149,14 @@ static void ocfs2_dio_free_write_ctx(struct inode *inode, static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_write_ctxt *wc; struct ocfs2_write_cluster_desc *desc = NULL; struct ocfs2_dio_write_ctxt *dwc = NULL; struct buffer_head *di_bh = NULL; u64 p_blkno; - loff_t pos = iblock << inode->i_sb->s_blocksize_bits; + loff_t pos = iblock << inode_sb(inode)->s_blocksize_bits; unsigned len, total_len = bh_result->b_size; int ret = 0, first_get_block = 0; @@ -2188,8 +2191,8 @@ static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock, goto out; } - if (ocfs2_clusters_for_bytes(inode->i_sb, pos + total_len) > - ocfs2_clusters_for_bytes(inode->i_sb, i_size_read(inode)) && + if (ocfs2_clusters_for_bytes(inode_sb(inode), pos + total_len) > + ocfs2_clusters_for_bytes(inode_sb(inode), i_size_read(inode)) && !dwc->dw_orphaned) { /* * when we are going to alloc extents beyond file size, add the @@ -2213,7 +2216,7 @@ static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock, down_write(&oi->ip_alloc_sem); if (first_get_block) { - if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) + if (ocfs2_sparse_alloc(OCFS2_SB(inode_sb(inode)))) ret = ocfs2_zero_tail(inode, di_bh, pos); else ret = ocfs2_expand_nonsparse_inode(inode, di_bh, pos, @@ -2234,11 +2237,11 @@ static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock, desc = &wc->w_desc[0]; - p_blkno = ocfs2_clusters_to_blocks(inode->i_sb, desc->c_phys); + p_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), desc->c_phys); BUG_ON(p_blkno == 0); - p_blkno += iblock & (u64)(ocfs2_clusters_to_blocks(inode->i_sb, 1) - 1); + p_blkno += iblock & (u64)(ocfs2_clusters_to_blocks(inode_sb(inode), 1) - 1); - map_bh(bh_result, inode->i_sb, p_blkno); + map_bh(bh_result, inode_sb(inode), p_blkno); bh_result->b_size = len; if (desc->c_needs_zero) set_buffer_new(bh_result); @@ -2281,7 +2284,7 @@ static int ocfs2_dio_end_io_write(struct inode *inode, { struct ocfs2_cached_dealloc_ctxt dealloc; struct ocfs2_extent_tree et; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_unwritten_extent *ue = NULL; struct buffer_head *di_bh = NULL; @@ -2345,7 +2348,7 @@ static int ocfs2_dio_end_io_write(struct inode *inode, goto unlock; } - credits = ocfs2_calc_extend_credits(inode->i_sb, &di->id2.i_list); + credits = ocfs2_calc_extend_credits(inode_sb(inode), &di->id2.i_list); handle = ocfs2_start_trans(osb, credits); if (IS_ERR(handle)) { @@ -2426,7 +2429,7 @@ static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter) { struct file *file = iocb->ki_filp; struct inode *inode = file->f_mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); get_block_t *get_block; /* @@ -2446,7 +2449,7 @@ static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter) else get_block = ocfs2_dio_wr_get_block; - return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, + return __blockdev_direct_IO(iocb, inode, inode_sb(inode)->s_bdev, iter, get_block, ocfs2_dio_end_io, NULL, 0); } diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c index 290373024d9d..a39ccd03fc83 100644 --- a/fs/ocfs2/dcache.c +++ b/fs/ocfs2/dcache.c @@ -445,7 +445,7 @@ void ocfs2_dentry_move(struct dentry *dentry, struct dentry *target, struct inode *old_dir, struct inode *new_dir) { int ret; - struct ocfs2_super *osb = OCFS2_SB(old_dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(old_dir)); struct inode *inode = d_inode(dentry); /* diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c index 977763d4c27d..b4bb93d1259d 100644 --- a/fs/ocfs2/dir.c +++ b/fs/ocfs2/dir.c @@ -88,7 +88,7 @@ static int ocfs2_dir_indexed(struct inode *inode); */ static int ocfs2_supports_dir_trailer(struct inode *dir) { - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); if (OCFS2_I(dir)->ip_dyn_features & OCFS2_INLINE_DATA_FL) return 0; @@ -106,7 +106,7 @@ static int ocfs2_supports_dir_trailer(struct inode *dir) */ static int ocfs2_new_dir_wants_trailer(struct inode *dir) { - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); return ocfs2_meta_ecc(osb) || ocfs2_supports_indexed_dirs(osb); @@ -155,7 +155,7 @@ static void ocfs2_init_dir_trailer(struct inode *inode, { struct ocfs2_dir_block_trailer *trailer; - trailer = ocfs2_trailer_from_bh(bh, inode->i_sb); + trailer = ocfs2_trailer_from_bh(bh, inode_sb(inode)); strcpy(trailer->db_signature, OCFS2_DIR_TRAILER_SIGNATURE); trailer->db_compat_rec_len = cpu_to_le16(sizeof(struct ocfs2_dir_block_trailer)); @@ -182,7 +182,7 @@ static int ocfs2_dx_dir_link_trailer(struct inode *dir, handle_t *handle, mlog_errno(ret); goto out; } - trailer = ocfs2_trailer_from_bh(dirdata_bh, dir->i_sb); + trailer = ocfs2_trailer_from_bh(dirdata_bh, inode_sb(dir)); dx_root = (struct ocfs2_dx_root_block *)dx_root_bh->b_data; trailer->db_free_next = dx_root->dr_free_blk; @@ -271,7 +271,7 @@ static void str2hashbuf(const char *msg, int len, __u32 *buf, int num) static void ocfs2_dx_dir_name_hash(struct inode *dir, const char *name, int len, struct ocfs2_dx_hinfo *hinfo) { - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); const char *p; __u32 in[8], buf[4]; @@ -329,7 +329,7 @@ static int ocfs2_check_dir_entry(struct inode * dir, else if (unlikely(rlen < OCFS2_DIR_REC_LEN(de->name_len))) error_msg = "rec_len is too small for name_len"; else if (unlikely( - ((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize)) + ((char *) de - bh->b_data) + rlen > inode_sb(dir)->s_blocksize)) error_msg = "directory entry across blocks"; if (unlikely(error_msg != NULL)) @@ -479,16 +479,16 @@ static int ocfs2_check_dir_trailer(struct inode *dir, struct buffer_head *bh) int rc = 0; struct ocfs2_dir_block_trailer *trailer; - trailer = ocfs2_trailer_from_bh(bh, dir->i_sb); + trailer = ocfs2_trailer_from_bh(bh, inode_sb(dir)); if (!OCFS2_IS_VALID_DIR_TRAILER(trailer)) { - rc = ocfs2_error(dir->i_sb, + rc = ocfs2_error(inode_sb(dir), "Invalid dirblock #%llu: signature = %.*s\n", (unsigned long long)bh->b_blocknr, 7, trailer->db_signature); goto out; } if (le64_to_cpu(trailer->db_blkno) != bh->b_blocknr) { - rc = ocfs2_error(dir->i_sb, + rc = ocfs2_error(inode_sb(dir), "Directory block #%llu has an invalid db_blkno of %llu\n", (unsigned long long)bh->b_blocknr, (unsigned long long)le64_to_cpu(trailer->db_blkno)); @@ -496,7 +496,7 @@ static int ocfs2_check_dir_trailer(struct inode *dir, struct buffer_head *bh) } if (le64_to_cpu(trailer->db_parent_dinode) != OCFS2_I(dir)->ip_blkno) { - rc = ocfs2_error(dir->i_sb, + rc = ocfs2_error(inode_sb(dir), "Directory block #%llu on dinode #%llu has an invalid parent_dinode of %llu\n", (unsigned long long)bh->b_blocknr, (unsigned long long)OCFS2_I(dir)->ip_blkno, @@ -696,7 +696,7 @@ static struct buffer_head *ocfs2_find_entry_el(const char *name, int namelen, int num = 0; int nblocks, i, err; - sb = dir->i_sb; + sb = inode_sb(dir); nblocks = i_size_read(dir) >> sb->s_blocksize_bits; start = OCFS2_I(dir)->ip_dir_start_lookup; @@ -804,7 +804,7 @@ static int ocfs2_dx_dir_lookup_rec(struct inode *inode, el = &eb->h_list; if (el->l_tree_depth) { - ret = ocfs2_error(inode->i_sb, + ret = ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in btree tree block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -823,7 +823,7 @@ static int ocfs2_dx_dir_lookup_rec(struct inode *inode, } if (!found) { - ret = ocfs2_error(inode->i_sb, + ret = ocfs2_error(inode_sb(inode), "Inode %lu has bad extent record (%u, %u, 0) in btree\n", inode->i_ino, le32_to_cpu(rec->e_cpos), @@ -881,10 +881,10 @@ static int ocfs2_dx_dir_lookup(struct inode *inode, cend = cpos + clen; if (name_hash >= cend) { /* We want the last cluster */ - blkno += ocfs2_clusters_to_blocks(inode->i_sb, clen - 1); + blkno += ocfs2_clusters_to_blocks(inode_sb(inode), clen - 1); cpos += clen - 1; } else { - blkno += ocfs2_clusters_to_blocks(inode->i_sb, + blkno += ocfs2_clusters_to_blocks(inode_sb(inode), name_hash - cpos); cpos = name_hash; } @@ -894,7 +894,7 @@ static int ocfs2_dx_dir_lookup(struct inode *inode, * find the exact block from the start of the cluster to * search, we take the lower bits of the hash. */ - blkno += ocfs2_dx_dir_hash_idx(OCFS2_SB(inode->i_sb), hinfo); + blkno += ocfs2_dx_dir_hash_idx(OCFS2_SB(inode_sb(inode)), hinfo); if (ret_phys_blkno) *ret_phys_blkno = blkno; @@ -986,7 +986,8 @@ static int ocfs2_dx_dir_search(const char *name, int namelen, found = ocfs2_search_dirblock(dir_ent_bh, dir, name, namelen, 0, dir_ent_bh->b_data, - dir->i_sb->s_blocksize, &dir_ent); + inode_sb(dir)->s_blocksize, + &dir_ent); if (found == 1) break; @@ -1297,7 +1298,7 @@ static int ocfs2_delete_entry_dx(handle_t *handle, struct inode *dir, * for a new one, so add this block to the free list if it * isn't already there. */ - trailer = ocfs2_trailer_from_bh(leaf_bh, dir->i_sb); + trailer = ocfs2_trailer_from_bh(leaf_bh, inode_sb(dir)); if (trailer->db_free_rec_len == 0) add_to_free_list = 1; @@ -1339,7 +1340,7 @@ static int ocfs2_delete_entry_dx(handle_t *handle, struct inode *dir, goto out; } - max_rec_len = ocfs2_find_max_rec_len(dir->i_sb, leaf_bh); + max_rec_len = ocfs2_find_max_rec_len(inode_sb(dir), leaf_bh); trailer->db_free_rec_len = cpu_to_le16(max_rec_len); if (add_to_free_list) { trailer->db_free_next = dx_root->dr_free_blk; @@ -1545,7 +1546,7 @@ static void ocfs2_remove_block_from_free_list(struct inode *dir, struct ocfs2_dx_root_block *dx_root; struct buffer_head *bh; - trailer = ocfs2_trailer_from_bh(lookup->dl_leaf_bh, dir->i_sb); + trailer = ocfs2_trailer_from_bh(lookup->dl_leaf_bh, inode_sb(dir)); if (ocfs2_free_list_at_root(lookup)) { bh = lookup->dl_dx_root_bh; @@ -1553,7 +1554,7 @@ static void ocfs2_remove_block_from_free_list(struct inode *dir, dx_root->dr_free_blk = trailer->db_free_next; } else { bh = lookup->dl_prev_leaf_bh; - prev = ocfs2_trailer_from_bh(bh, dir->i_sb); + prev = ocfs2_trailer_from_bh(bh, inode_sb(dir)); prev->db_free_next = trailer->db_free_next; } @@ -1575,14 +1576,16 @@ static void ocfs2_recalc_free_list(struct inode *dir, handle_t *handle, struct ocfs2_dir_block_trailer *trailer; /* Walk dl_leaf_bh to figure out what the new free rec_len is. */ - max_rec_len = ocfs2_find_max_rec_len(dir->i_sb, lookup->dl_leaf_bh); + max_rec_len = ocfs2_find_max_rec_len(inode_sb(dir), + lookup->dl_leaf_bh); if (max_rec_len) { /* * There's still room in this block, so no need to remove it * from the free list. In this case, we just want to update * the rec len accounting. */ - trailer = ocfs2_trailer_from_bh(lookup->dl_leaf_bh, dir->i_sb); + trailer = ocfs2_trailer_from_bh(lookup->dl_leaf_bh, + inode_sb(dir)); trailer->db_free_rec_len = cpu_to_le16(max_rec_len); ocfs2_journal_dirty(handle, lookup->dl_leaf_bh); } else { @@ -1607,7 +1610,7 @@ int __ocfs2_add_entry(handle_t *handle, unsigned short rec_len; struct ocfs2_dir_entry *de, *de1; struct ocfs2_dinode *di = (struct ocfs2_dinode *)parent_fe_bh->b_data; - struct super_block *sb = dir->i_sb; + struct super_block *sb = inode_sb(dir); int retval; unsigned int size = sb->s_blocksize; struct buffer_head *insert_bh = lookup->dl_leaf_bh; @@ -1675,7 +1678,8 @@ int __ocfs2_add_entry(handle_t *handle, "offset is %lu, trailer offset is %d\n", namelen, name, namelen, (unsigned long long)parent_fe_bh->b_blocknr, - offset, ocfs2_dir_trailer_blk_off(dir->i_sb)); + offset, + ocfs2_dir_trailer_blk_off(inode_sb(dir))); if (ocfs2_dirent_would_fit(de, rec_len)) { dir->i_mtime = dir->i_ctime = current_time(dir); @@ -1832,7 +1836,7 @@ static int ocfs2_dir_foreach_blk_el(struct inode *inode, int i; struct buffer_head * bh, * tmp; struct ocfs2_dir_entry * de; - struct super_block * sb = inode->i_sb; + struct super_block * sb = inode_sb(inode); unsigned int ra_sectors = 16; int stored = 0; @@ -2252,7 +2256,7 @@ static int ocfs2_fill_new_dir_el(struct ocfs2_super *osb, struct ocfs2_dir_entry *de; if (ocfs2_new_dir_wants_trailer(inode)) - size = ocfs2_dir_trailer_blk_off(parent->i_sb); + size = ocfs2_dir_trailer_blk_off(inode_sb(parent)); status = ocfs2_do_extend_dir(osb->sb, handle, inode, fe_bh, data_ac, NULL, &new_bh); @@ -2288,7 +2292,7 @@ static int ocfs2_fill_new_dir_el(struct ocfs2_super *osb, ocfs2_journal_dirty(handle, new_bh); - i_size_write(inode, inode->i_sb->s_blocksize); + i_size_write(inode, inode_sb(inode)->s_blocksize); set_nlink(inode, 2); inode->i_blocks = ocfs2_inode_sector_count(inode); status = ocfs2_mark_inode_dirty(handle, inode, fe_bh); @@ -2324,7 +2328,7 @@ static int ocfs2_dx_dir_attach_index(struct ocfs2_super *osb, struct buffer_head *dx_root_bh = NULL; struct ocfs2_dx_root_block *dx_root; struct ocfs2_dir_block_trailer *trailer = - ocfs2_trailer_from_bh(dirdata_bh, dir->i_sb); + ocfs2_trailer_from_bh(dirdata_bh, inode_sb(dir)); ret = ocfs2_claim_metadata(handle, meta_ac, 1, &suballoc_loc, &dr_suballoc_bit, &num_bits, &dr_blkno); @@ -2462,7 +2466,7 @@ static int __ocfs2_dx_dir_new_cluster(struct inode *dir, int ret; u32 phys, num; u64 phys_blkno; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); /* * XXX: For create, this should claim cluster for the index @@ -2625,7 +2629,7 @@ static int ocfs2_dx_dir_index_block(struct inode *dir, u64 dirent_blk = dirent_bh->b_blocknr; de_buf = dirent_bh->b_data; - limit = de_buf + dir->i_sb->s_blocksize; + limit = de_buf + inode_sb(dir)->s_blocksize; while (de_buf < limit) { de = (struct ocfs2_dir_entry *)de_buf; @@ -2636,7 +2640,7 @@ static int ocfs2_dx_dir_index_block(struct inode *dir, ocfs2_dx_dir_name_hash(dir, de->name, namelen, &hinfo); - i = ocfs2_dx_dir_hash_idx(OCFS2_SB(dir->i_sb), &hinfo); + i = ocfs2_dx_dir_hash_idx(OCFS2_SB(inode_sb(dir)), &hinfo); dx_leaf_bh = dx_leaves[i]; ret = __ocfs2_dx_dir_leaf_insert(dir, handle, &hinfo, @@ -2672,7 +2676,7 @@ static void ocfs2_dx_dir_index_root_block(struct inode *dir, dx_root = (struct ocfs2_dx_root_block *)dx_root_bh->b_data; de_buf = dirent_bh->b_data; - limit = de_buf + dir->i_sb->s_blocksize; + limit = de_buf + inode_sb(dir)->s_blocksize; while (de_buf < limit) { de = (struct ocfs2_dir_entry *)de_buf; @@ -2723,7 +2727,7 @@ static int ocfs2_new_dx_should_be_inline(struct inode *dir, } /* We are careful to leave room for one extra record. */ - return dirent_count < ocfs2_dx_entries_per_root(dir->i_sb); + return dirent_count < ocfs2_dx_entries_per_root(inode_sb(dir)); } /* @@ -2743,7 +2747,7 @@ static int ocfs2_new_dx_should_be_inline(struct inode *dir, static unsigned int ocfs2_expand_last_dirent(char *start, unsigned int old_size, struct inode *dir) { - struct super_block *sb = dir->i_sb; + struct super_block *sb = inode_sb(dir); struct ocfs2_dir_entry *de; struct ocfs2_dir_entry *prev_de; char *de_buf, *limit; @@ -2796,12 +2800,12 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, struct buffer_head **first_block_bh) { u32 alloc, dx_alloc, bit_off, len, num_dx_entries = 0; - struct super_block *sb = dir->i_sb; + struct super_block *sb = inode_sb(dir); int ret, i, num_dx_leaves = 0, dx_inline = 0, credits = ocfs2_inline_to_extents_credits(sb); u64 dx_insert_blkno, blkno, bytes = blocks_wanted << sb->s_blocksize_bits; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_inode_info *oi = OCFS2_I(dir); struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *meta_ac = NULL; @@ -2894,7 +2898,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, mlog_errno(ret); goto out_commit; } - bytes_allocated += ocfs2_clusters_to_bytes(dir->i_sb, 1); + bytes_allocated += ocfs2_clusters_to_bytes(inode_sb(dir), 1); } /* @@ -2909,14 +2913,14 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, mlog_errno(ret); goto out_commit; } - bytes_allocated += ocfs2_clusters_to_bytes(dir->i_sb, 1); + bytes_allocated += ocfs2_clusters_to_bytes(inode_sb(dir), 1); /* * Operations are carefully ordered so that we set up the new * data block first. The conversion from inline data to * extents follows. */ - blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off); + blkno = ocfs2_clusters_to_blocks(inode_sb(dir), bit_off); dirdata_bh = sb_getblk(sb, blkno); if (!dirdata_bh) { ret = -ENOMEM; @@ -3051,7 +3055,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, mlog_errno(ret); goto out_commit; } - blkno = ocfs2_clusters_to_blocks(dir->i_sb, bit_off); + blkno = ocfs2_clusters_to_blocks(inode_sb(dir), bit_off); ret = ocfs2_insert_extent(handle, &et, 1, blkno, len, 0, NULL); @@ -3059,7 +3063,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, mlog_errno(ret); goto out_commit; } - bytes_allocated += ocfs2_clusters_to_bytes(dir->i_sb, 1); + bytes_allocated += ocfs2_clusters_to_bytes(inode_sb(dir), 1); } *first_block_bh = dirdata_bh; @@ -3072,7 +3076,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, * We need to return the correct block within the * cluster which should hold our entry. */ - off = ocfs2_dx_dir_hash_idx(OCFS2_SB(dir->i_sb), + off = ocfs2_dx_dir_hash_idx(OCFS2_SB(inode_sb(dir)), &lookup->dl_hinfo); get_bh(dx_leaves[off]); lookup->dl_dx_leaf_bh = dx_leaves[off]; @@ -3333,7 +3337,7 @@ static int ocfs2_extend_dir(struct ocfs2_super *osb, ocfs2_update_inode_fsync_trans(handle, dir, 1); ocfs2_journal_dirty(handle, new_bh); - dir_i_size += dir->i_sb->s_blocksize; + dir_i_size += inode_sb(dir)->s_blocksize; i_size_write(dir, dir_i_size); dir->i_blocks = ocfs2_inode_sector_count(dir); status = ocfs2_mark_inode_dirty(handle, dir, parent_fe_bh); @@ -3367,12 +3371,12 @@ static int ocfs2_find_dir_space_id(struct inode *dir, struct buffer_head *di_bh, unsigned int *blocks_wanted) { int ret; - struct super_block *sb = dir->i_sb; + struct super_block *sb = inode_sb(dir); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_dir_entry *de, *last_de = NULL; char *de_buf, *limit; unsigned long offset = 0; - unsigned int rec_len, new_rec_len, free_space = dir->i_sb->s_blocksize; + unsigned int rec_len, new_rec_len, free_space = inode_sb(dir)->s_blocksize; /* * This calculates how many free bytes we'd have in block zero, should @@ -3381,7 +3385,7 @@ static int ocfs2_find_dir_space_id(struct inode *dir, struct buffer_head *di_bh, if (ocfs2_new_dir_wants_trailer(dir)) free_space = ocfs2_dir_trailer_blk_off(sb) - i_size_read(dir); else - free_space = dir->i_sb->s_blocksize - i_size_read(dir); + free_space = inode_sb(dir)->s_blocksize - i_size_read(dir); de_buf = di->id2.i_data.id_data; limit = de_buf + i_size_read(dir); @@ -3439,9 +3443,9 @@ static int ocfs2_find_dir_space_el(struct inode *dir, const char *name, struct buffer_head *bh = NULL; unsigned short rec_len; struct ocfs2_dir_entry *de; - struct super_block *sb = dir->i_sb; + struct super_block *sb = inode_sb(dir); int status; - int blocksize = dir->i_sb->s_blocksize; + int blocksize = inode_sb(dir)->s_blocksize; status = ocfs2_read_dir_block(dir, 0, &bh, 0); if (status) @@ -3676,7 +3680,7 @@ static void ocfs2_dx_dir_transfer_leaf(struct inode *dir, u32 split_hash, num_used = le16_to_cpu(orig_list->de_num_used); - memcpy(tmp_dx_leaf, orig_dx_leaf, dir->i_sb->s_blocksize); + memcpy(tmp_dx_leaf, orig_dx_leaf, inode_sb(dir)->s_blocksize); tmp_list->de_num_used = cpu_to_le16(0); memset(&tmp_list->de_entries, 0, sizeof(*dx_entry)*num_used); @@ -3690,7 +3694,7 @@ static void ocfs2_dx_dir_transfer_leaf(struct inode *dir, u32 split_hash, ocfs2_dx_dir_leaf_insert_tail(tmp_dx_leaf, dx_entry); } - memcpy(orig_dx_leaf, tmp_dx_leaf, dir->i_sb->s_blocksize); + memcpy(orig_dx_leaf, tmp_dx_leaf, inode_sb(dir)->s_blocksize); ocfs2_journal_dirty(handle, orig_dx_leaves[i]); ocfs2_journal_dirty(handle, new_dx_leaves[i]); @@ -3784,7 +3788,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir, } ret = dquot_alloc_space_nodirty(dir, - ocfs2_clusters_to_bytes(dir->i_sb, 1)); + ocfs2_clusters_to_bytes(inode_sb(dir), 1)); if (ret) goto out_commit; did_quota = 1; @@ -3839,7 +3843,8 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir, goto out_commit; } - orig_leaves_start = ocfs2_block_to_cluster_start(dir->i_sb, leaf_blkno); + orig_leaves_start = ocfs2_block_to_cluster_start(inode_sb(dir), + leaf_blkno); ret = ocfs2_read_dx_leaves(dir, orig_leaves_start, num_dx_leaves, orig_dx_leaves); if (ret) { @@ -3880,7 +3885,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir, out_commit: if (ret < 0 && did_quota) dquot_free_space_nodirty(dir, - ocfs2_clusters_to_bytes(dir->i_sb, 1)); + ocfs2_clusters_to_bytes(inode_sb(dir), 1)); ocfs2_update_inode_fsync_trans(handle, dir, 1); ocfs2_commit_trans(osb, handle); @@ -4005,7 +4010,7 @@ static int ocfs2_search_dx_free_list(struct inode *dir, goto out; } - db = ocfs2_trailer_from_bh(leaf_bh, dir->i_sb); + db = ocfs2_trailer_from_bh(leaf_bh, inode_sb(dir)); if (rec_len <= le16_to_cpu(db->db_free_rec_len)) { lookup->dl_leaf_bh = leaf_bh; lookup->dl_prev_leaf_bh = prev_leaf_bh; @@ -4035,7 +4040,7 @@ static int ocfs2_expand_inline_dx_root(struct inode *dir, struct ocfs2_extent_tree et; u64 insert_blkno; struct ocfs2_alloc_context *data_ac = NULL; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); handle_t *handle = NULL; struct ocfs2_dx_root_block *dx_root; struct ocfs2_dx_entry_list *entry_list; @@ -4127,7 +4132,7 @@ static int ocfs2_expand_inline_dx_root(struct inode *dir, out_commit: if (ret < 0 && did_quota) dquot_free_space_nodirty(dir, - ocfs2_clusters_to_bytes(dir->i_sb, 1)); + ocfs2_clusters_to_bytes(inode_sb(dir), 1)); ocfs2_commit_trans(osb, handle); @@ -4165,7 +4170,7 @@ static int ocfs2_prepare_dx_dir_for_insert(struct inode *dir, struct ocfs2_dir_lookup_result *lookup) { int ret, free_dx_root = 1; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct buffer_head *dx_root_bh = NULL; struct buffer_head *leaf_bh = NULL; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; @@ -4342,7 +4347,7 @@ static int ocfs2_dx_dir_remove_index(struct inode *dir, struct buffer_head *dx_root_bh) { int ret; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_dx_root_block *dx_root; struct inode *dx_alloc_inode = NULL; @@ -4424,7 +4429,7 @@ int ocfs2_dx_dir_truncate(struct inode *dir, struct buffer_head *di_bh) unsigned int uninitialized_var(clen); u32 major_hash = UINT_MAX, p_cpos, uninitialized_var(cpos); u64 uninitialized_var(blkno); - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct buffer_head *dx_root_bh = NULL; struct ocfs2_dx_root_block *dx_root; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; @@ -4457,7 +4462,7 @@ int ocfs2_dx_dir_truncate(struct inode *dir, struct buffer_head *di_bh) goto out; } - p_cpos = ocfs2_blocks_to_clusters(dir->i_sb, blkno); + p_cpos = ocfs2_blocks_to_clusters(inode_sb(dir), blkno); ret = ocfs2_remove_btree_range(dir, &et, cpos, p_cpos, clen, 0, &dealloc, 0, false); diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c index 602c71f32740..a434f7e143cf 100644 --- a/fs/ocfs2/dlmfs/dlmfs.c +++ b/fs/ocfs2/dlmfs/dlmfs.c @@ -412,7 +412,7 @@ static struct inode *dlmfs_get_inode(struct inode *parent, struct dentry *dentry, umode_t mode) { - struct super_block *sb = parent->i_sb; + struct super_block *sb = inode_sb(parent); struct inode * inode = new_inode(sb); struct dlmfs_inode_private *ip; diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 9479f99c2145..ada39d788169 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c @@ -565,14 +565,15 @@ void ocfs2_inode_lock_res_init(struct ocfs2_lock_res *res, ocfs2_build_lock_name(type, OCFS2_I(inode)->ip_blkno, generation, res->l_name); - ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), res, type, ops, inode); + ocfs2_lock_res_init_common(OCFS2_SB(inode_sb(inode)), res, type, ops, + inode); } static struct ocfs2_super *ocfs2_get_inode_osb(struct ocfs2_lock_res *lockres) { struct inode *inode = ocfs2_lock_res_inode(lockres); - return OCFS2_SB(inode->i_sb); + return OCFS2_SB(inode_sb(inode)); } static struct ocfs2_super *ocfs2_get_qinfo_osb(struct ocfs2_lock_res *lockres) @@ -586,7 +587,7 @@ static struct ocfs2_super *ocfs2_get_file_osb(struct ocfs2_lock_res *lockres) { struct ocfs2_file_private *fp = lockres->l_priv; - return OCFS2_SB(fp->fp_file->f_mapping->host->i_sb); + return OCFS2_SB(inode_sb(fp->fp_file->f_mapping->host)); } static __u64 ocfs2_get_dentry_lock_ino(struct ocfs2_lock_res *lockres) @@ -603,7 +604,7 @@ static struct ocfs2_super *ocfs2_get_dentry_osb(struct ocfs2_lock_res *lockres) { struct ocfs2_dentry_lock *dl = lockres->l_priv; - return OCFS2_SB(dl->dl_inode->i_sb); + return OCFS2_SB(inode_sb(dl->dl_inode)); } void ocfs2_dentry_lock_res_init(struct ocfs2_dentry_lock *dl, @@ -641,7 +642,7 @@ void ocfs2_dentry_lock_res_init(struct ocfs2_dentry_lock *dl, memcpy(&lockres->l_name[OCFS2_DENTRY_LOCK_INO_START], &inode_blkno_be, sizeof(__be64)); - ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), lockres, + ocfs2_lock_res_init_common(OCFS2_SB(inode_sb(inode)), lockres, OCFS2_LOCK_TYPE_DENTRY, &ocfs2_dentry_lops, dl); } @@ -716,7 +717,7 @@ void ocfs2_file_lock_res_init(struct ocfs2_lock_res *lockres, ocfs2_lock_res_init_once(lockres); ocfs2_build_lock_name(OCFS2_LOCK_TYPE_FLOCK, oi->ip_blkno, inode->i_generation, lockres->l_name); - ocfs2_lock_res_init_common(OCFS2_SB(inode->i_sb), lockres, + ocfs2_lock_res_init_common(OCFS2_SB(inode_sb(inode)), lockres, OCFS2_LOCK_TYPE_FLOCK, &ocfs2_flock_lops, fp); lockres->l_flags |= OCFS2_LOCK_NOCACHE; @@ -1701,7 +1702,7 @@ static int ocfs2_create_new_lock(struct ocfs2_super *osb, int ocfs2_create_new_inode_locks(struct inode *inode) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); BUG_ON(!ocfs2_inode_is_new(inode)); @@ -1743,7 +1744,7 @@ int ocfs2_rw_lock(struct inode *inode, int write) { int status, level; struct ocfs2_lock_res *lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu take %s RW lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, @@ -1756,7 +1757,8 @@ int ocfs2_rw_lock(struct inode *inode, int write) level = write ? DLM_LOCK_EX : DLM_LOCK_PR; - status = ocfs2_cluster_lock(OCFS2_SB(inode->i_sb), lockres, level, 0, + status = ocfs2_cluster_lock(OCFS2_SB(inode_sb(inode)), lockres, level, + 0, 0); if (status < 0) mlog_errno(status); @@ -1768,7 +1770,7 @@ int ocfs2_try_rw_lock(struct inode *inode, int write) { int status, level; struct ocfs2_lock_res *lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu try to take %s RW lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, @@ -1789,14 +1791,15 @@ void ocfs2_rw_unlock(struct inode *inode, int write) { int level = write ? DLM_LOCK_EX : DLM_LOCK_PR; struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_rw_lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu drop %s RW lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, write ? "EXMODE" : "PRMODE"); if (!ocfs2_mount_local(osb)) - ocfs2_cluster_unlock(OCFS2_SB(inode->i_sb), lockres, level); + ocfs2_cluster_unlock(OCFS2_SB(inode_sb(inode)), lockres, + level); } /* @@ -1806,7 +1809,7 @@ int ocfs2_open_lock(struct inode *inode) { int status = 0; struct ocfs2_lock_res *lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu take PRMODE open lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno); @@ -1816,7 +1819,7 @@ int ocfs2_open_lock(struct inode *inode) lockres = &OCFS2_I(inode)->ip_open_lockres; - status = ocfs2_cluster_lock(OCFS2_SB(inode->i_sb), lockres, + status = ocfs2_cluster_lock(OCFS2_SB(inode_sb(inode)), lockres, DLM_LOCK_PR, 0, 0); if (status < 0) mlog_errno(status); @@ -1829,7 +1832,7 @@ int ocfs2_try_open_lock(struct inode *inode, int write) { int status = 0, level; struct ocfs2_lock_res *lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu try to take %s open lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, @@ -1854,7 +1857,7 @@ int ocfs2_try_open_lock(struct inode *inode, int write) * other nodes and the -EAGAIN will indicate to the caller that * this inode is still in use. */ - status = ocfs2_cluster_lock(OCFS2_SB(inode->i_sb), lockres, + status = ocfs2_cluster_lock(OCFS2_SB(inode_sb(inode)), lockres, level, DLM_LKF_NOQUEUE, 0); out: @@ -1867,7 +1870,7 @@ int ocfs2_try_open_lock(struct inode *inode, int write) void ocfs2_open_unlock(struct inode *inode) { struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_open_lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu drop open lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno); @@ -1876,10 +1879,10 @@ void ocfs2_open_unlock(struct inode *inode) goto out; if(lockres->l_ro_holders) - ocfs2_cluster_unlock(OCFS2_SB(inode->i_sb), lockres, + ocfs2_cluster_unlock(OCFS2_SB(inode_sb(inode)), lockres, DLM_LOCK_PR); if(lockres->l_ex_holders) - ocfs2_cluster_unlock(OCFS2_SB(inode->i_sb), lockres, + ocfs2_cluster_unlock(OCFS2_SB(inode_sb(inode)), lockres, DLM_LOCK_EX); out: @@ -1961,7 +1964,7 @@ int ocfs2_file_lock(struct file *file, int ex, int trylock) unsigned long flags; struct ocfs2_file_private *fp = file->private_data; struct ocfs2_lock_res *lockres = &fp->fp_flock; - struct ocfs2_super *osb = OCFS2_SB(file->f_mapping->host->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(file->f_mapping->host)); struct ocfs2_mask_waiter mw; ocfs2_init_mask_waiter(&mw); @@ -2057,7 +2060,7 @@ void ocfs2_file_unlock(struct file *file) unsigned long flags; struct ocfs2_file_private *fp = file->private_data; struct ocfs2_lock_res *lockres = &fp->fp_flock; - struct ocfs2_super *osb = OCFS2_SB(file->f_mapping->host->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(file->f_mapping->host)); struct ocfs2_mask_waiter mw; ocfs2_init_mask_waiter(&mw); @@ -2297,7 +2300,7 @@ static int ocfs2_inode_lock_update(struct inode *inode, struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; struct ocfs2_dinode *fe; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (ocfs2_mount_local(osb)) goto bail; @@ -2405,7 +2408,7 @@ int ocfs2_inode_lock_full_nested(struct inode *inode, int status, level, acquired; u32 dlm_flags; struct ocfs2_lock_res *lockres = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *local_bh = NULL; mlog(0, "inode %llu, take %s META lock\n", @@ -2595,15 +2598,16 @@ void ocfs2_inode_unlock(struct inode *inode, { int level = ex ? DLM_LOCK_EX : DLM_LOCK_PR; struct ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_inode_lockres; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); mlog(0, "inode %llu drop %s META lock\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, ex ? "EXMODE" : "PRMODE"); - if (!ocfs2_is_hard_readonly(OCFS2_SB(inode->i_sb)) && + if (!ocfs2_is_hard_readonly(OCFS2_SB(inode_sb(inode))) && !ocfs2_mount_local(osb)) - ocfs2_cluster_unlock(OCFS2_SB(inode->i_sb), lockres, level); + ocfs2_cluster_unlock(OCFS2_SB(inode_sb(inode)), lockres, + level); } /* @@ -3468,21 +3472,21 @@ int ocfs2_drop_inode_locks(struct inode *inode) /* No need to call ocfs2_mark_lockres_freeing here - * ocfs2_clear_inode has done it for us. */ - err = ocfs2_drop_lock(OCFS2_SB(inode->i_sb), + err = ocfs2_drop_lock(OCFS2_SB(inode_sb(inode)), &OCFS2_I(inode)->ip_open_lockres); if (err < 0) mlog_errno(err); status = err; - err = ocfs2_drop_lock(OCFS2_SB(inode->i_sb), + err = ocfs2_drop_lock(OCFS2_SB(inode_sb(inode)), &OCFS2_I(inode)->ip_inode_lockres); if (err < 0) mlog_errno(err); if (err < 0 && !status) status = err; - err = ocfs2_drop_lock(OCFS2_SB(inode->i_sb), + err = ocfs2_drop_lock(OCFS2_SB(inode_sb(inode)), &OCFS2_I(inode)->ip_rw_lockres); if (err < 0) mlog_errno(err); diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c index 9f88188060db..f54d262627ae 100644 --- a/fs/ocfs2/export.c +++ b/fs/ocfs2/export.c @@ -166,7 +166,7 @@ static struct dentry *ocfs2_get_parent(struct dentry *child) goto bail_unlock; } - parent = d_obtain_alias(ocfs2_iget(OCFS2_SB(dir->i_sb), blkno, 0, 0)); + parent = d_obtain_alias(ocfs2_iget(OCFS2_SB(inode_sb(dir)), blkno, 0, 0)); bail_unlock: ocfs2_inode_unlock(dir, 0); diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c index 06cb96462bf9..7b9b0bf66d0f 100644 --- a/fs/ocfs2/extent_map.c +++ b/fs/ocfs2/extent_map.c @@ -234,7 +234,7 @@ void ocfs2_extent_map_insert_rec(struct inode *inode, struct ocfs2_extent_map_item ins; ins.ei_cpos = le32_to_cpu(rec->e_cpos); - ins.ei_phys = ocfs2_blocks_to_clusters(inode->i_sb, + ins.ei_phys = ocfs2_blocks_to_clusters(inode_sb(inode), le64_to_cpu(rec->e_blkno)); ins.ei_clusters = le16_to_cpu(rec->e_leaf_clusters); ins.ei_flags = rec->e_flags; @@ -305,7 +305,7 @@ static int ocfs2_last_eb_is_empty(struct inode *inode, el = &eb->h_list; if (el->l_tree_depth) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in leaf block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -441,7 +441,7 @@ static int ocfs2_get_clusters_nocache(struct inode *inode, el = &eb->h_list; if (el->l_tree_depth) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in leaf block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -476,7 +476,7 @@ static int ocfs2_get_clusters_nocache(struct inode *inode, BUG_ON(v_cluster < le32_to_cpu(rec->e_cpos)); if (!rec->e_blkno) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %lu has bad extent record (%u, %u, 0)\n", inode->i_ino, le32_to_cpu(rec->e_cpos), @@ -565,7 +565,7 @@ int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster, el = &eb->h_list; if (el->l_tree_depth) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in xattr leaf block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -584,7 +584,7 @@ int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster, BUG_ON(v_cluster < le32_to_cpu(rec->e_cpos)); if (!rec->e_blkno) { - ocfs2_error(inode->i_sb, + ocfs2_error(inode_sb(inode), "Inode %lu has bad extent record (%u, %u, 0) in xattr\n", inode->i_ino, le32_to_cpu(rec->e_cpos), @@ -593,8 +593,8 @@ int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster, goto out; } coff = v_cluster - le32_to_cpu(rec->e_cpos); - *p_cluster = ocfs2_blocks_to_clusters(inode->i_sb, - le64_to_cpu(rec->e_blkno)); + *p_cluster = ocfs2_blocks_to_clusters(inode_sb(inode), + le64_to_cpu(rec->e_blkno)); *p_cluster = *p_cluster + coff; if (num_clusters) *num_clusters = ocfs2_rec_clusters(el, rec) - coff; @@ -652,7 +652,8 @@ int ocfs2_get_clusters(struct inode *inode, u32 v_cluster, *num_clusters = hole_len; } } else { - ocfs2_relative_extent_offsets(inode->i_sb, v_cluster, &rec, + ocfs2_relative_extent_offsets(inode_sb(inode), v_cluster, + &rec, p_cluster, num_clusters); flags = rec.e_flags; @@ -675,11 +676,11 @@ int ocfs2_extent_map_get_blocks(struct inode *inode, u64 v_blkno, u64 *p_blkno, u64 *ret_count, unsigned int *extent_flags) { int ret; - int bpc = ocfs2_clusters_to_blocks(inode->i_sb, 1); + int bpc = ocfs2_clusters_to_blocks(inode_sb(inode), 1); u32 cpos, num_clusters, p_cluster; u64 boff = 0; - cpos = ocfs2_blocks_to_clusters(inode->i_sb, v_blkno); + cpos = ocfs2_blocks_to_clusters(inode_sb(inode), v_blkno); ret = ocfs2_get_clusters(inode, cpos, &p_cluster, &num_clusters, extent_flags); @@ -692,14 +693,15 @@ int ocfs2_extent_map_get_blocks(struct inode *inode, u64 v_blkno, u64 *p_blkno, * p_cluster == 0 indicates a hole. */ if (p_cluster) { - boff = ocfs2_clusters_to_blocks(inode->i_sb, p_cluster); + boff = ocfs2_clusters_to_blocks(inode_sb(inode), p_cluster); boff += (v_blkno & (u64)(bpc - 1)); } *p_blkno = boff; if (ret_count) { - *ret_count = ocfs2_clusters_to_blocks(inode->i_sb, num_clusters); + *ret_count = ocfs2_clusters_to_blocks(inode_sb(inode), + num_clusters); *ret_count -= v_blkno & (u64)(bpc - 1); } @@ -726,12 +728,12 @@ static int ocfs2_fiemap_inline(struct inode *inode, struct buffer_head *di_bh, di = (struct ocfs2_dinode *)di_bh->b_data; if (ocfs2_inode_is_fast_symlink(inode)) - id_count = ocfs2_fast_symlink_chars(inode->i_sb); + id_count = ocfs2_fast_symlink_chars(inode_sb(inode)); else id_count = le16_to_cpu(di->id2.i_data.id_count); if (map_start < id_count) { - phys = oi->ip_blkno << inode->i_sb->s_blocksize_bits; + phys = oi->ip_blkno << inode_sb(inode)->s_blocksize_bits; if (ocfs2_inode_is_fast_symlink(inode)) phys += offsetof(struct ocfs2_dinode, id2.i_symlink); else @@ -755,7 +757,7 @@ int ocfs2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, int ret, is_last; u32 mapping_end, cpos; unsigned int hole_size; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); u64 len_bytes, phys_bytes, virt_bytes; struct buffer_head *di_bh = NULL; struct ocfs2_extent_rec rec; @@ -782,7 +784,7 @@ int ocfs2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, } cpos = map_start >> osb->s_clustersize_bits; - mapping_end = ocfs2_clusters_for_bytes(inode->i_sb, + mapping_end = ocfs2_clusters_for_bytes(inode_sb(inode), map_start + map_len); is_last = 0; while (cpos < mapping_end && !is_last) { @@ -839,7 +841,7 @@ int ocfs2_overwrite_io(struct inode *inode, struct buffer_head *di_bh, { int ret = 0, is_last; u32 mapping_end, cpos; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_extent_rec rec; if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { @@ -850,7 +852,7 @@ int ocfs2_overwrite_io(struct inode *inode, struct buffer_head *di_bh, } cpos = map_start >> osb->s_clustersize_bits; - mapping_end = ocfs2_clusters_for_bytes(inode->i_sb, + mapping_end = ocfs2_clusters_for_bytes(inode_sb(inode), map_start + map_len); is_last = 0; while (cpos < mapping_end && !is_last) { @@ -882,7 +884,7 @@ int ocfs2_seek_data_hole_offset(struct file *file, loff_t *offset, int whence) struct inode *inode = file->f_mapping->host; int ret; unsigned int is_last = 0, is_data = 0; - u16 cs_bits = OCFS2_SB(inode->i_sb)->s_clustersize_bits; + u16 cs_bits = OCFS2_SB(inode_sb(inode))->s_clustersize_bits; u32 cpos, cend, clen, hole_size; u64 extoff, extlen; struct buffer_head *di_bh = NULL; @@ -911,7 +913,7 @@ int ocfs2_seek_data_hole_offset(struct file *file, loff_t *offset, int whence) clen = 0; cpos = *offset >> cs_bits; - cend = ocfs2_clusters_for_bytes(inode->i_sb, i_size_read(inode)); + cend = ocfs2_clusters_for_bytes(inode_sb(inode), i_size_read(inode)); while (cpos < cend && !is_last) { ret = ocfs2_get_clusters_nocache(inode, di_bh, cpos, &hole_size, @@ -984,7 +986,7 @@ int ocfs2_read_virt_blocks(struct inode *inode, u64 v_block, int nr, inode, (unsigned long long)v_block, nr, bhs, flags, validate); - if (((v_block + nr - 1) << inode->i_sb->s_blocksize_bits) >= + if (((v_block + nr - 1) << inode_sb(inode)->s_blocksize_bits) >= i_size_read(inode)) { BUG_ON(!(flags & OCFS2_BH_READAHEAD)); goto out; @@ -1006,7 +1008,7 @@ int ocfs2_read_virt_blocks(struct inode *inode, u64 v_block, int nr, "Inode #%llu contains a hole at offset %llu\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)(v_block + done) << - inode->i_sb->s_blocksize_bits); + inode_sb(inode)->s_blocksize_bits); break; } diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 5d1784a365a3..b41f89b0f814 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -84,7 +84,7 @@ static int ocfs2_init_file_private(struct inode *inode, struct file *file) static void ocfs2_free_file_private(struct inode *inode, struct file *file) { struct ocfs2_file_private *fp = file->private_data; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (fp) { ocfs2_simple_drop_lockres(osb, &fp->fp_flock); @@ -182,7 +182,7 @@ static int ocfs2_sync_file(struct file *file, loff_t start, loff_t end, { int err = 0; struct inode *inode = file->f_mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_inode_info *oi = OCFS2_I(inode); journal_t *journal = osb->journal->j_journal; int ret; @@ -208,7 +208,8 @@ static int ocfs2_sync_file(struct file *file, loff_t start, loff_t end, needs_barrier = true; err = jbd2_complete_transaction(journal, commit_tid); if (needs_barrier) { - ret = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL); + ret = blkdev_issue_flush(inode_sb(inode)->s_bdev, GFP_KERNEL, + NULL); if (!err) err = ret; } @@ -223,13 +224,13 @@ int ocfs2_should_update_atime(struct inode *inode, struct vfsmount *vfsmnt) { struct timespec now; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb)) return 0; if ((inode->i_flags & S_NOATIME) || - ((inode->i_sb->s_flags & SB_NODIRATIME) && S_ISDIR(inode->i_mode))) + ((inode_sb(inode)->s_flags & SB_NODIRATIME) && S_ISDIR(inode->i_mode))) return 0; /* @@ -266,7 +267,7 @@ int ocfs2_update_inode_atime(struct inode *inode, struct buffer_head *bh) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); handle_t *handle; struct ocfs2_dinode *di = (struct ocfs2_dinode *) bh->b_data; @@ -296,7 +297,7 @@ int ocfs2_update_inode_atime(struct inode *inode, ocfs2_journal_dirty(handle, bh); out_commit: - ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(inode)), handle); out: return ret; } @@ -327,7 +328,7 @@ int ocfs2_simple_size_update(struct inode *inode, u64 new_i_size) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); handle_t *handle = NULL; handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); @@ -353,7 +354,7 @@ static int ocfs2_cow_file_pos(struct inode *inode, u64 offset) { int status; - u32 phys, cpos = offset >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; + u32 phys, cpos = offset >> OCFS2_SB(inode_sb(inode))->s_clustersize_bits; unsigned int num_clusters = 0; unsigned int ext_flags = 0; @@ -362,7 +363,7 @@ static int ocfs2_cow_file_pos(struct inode *inode, * no space for ocfs2_zero_range_for_truncate to fill, so no need to * CoW either. */ - if ((offset & (OCFS2_SB(inode->i_sb)->s_clustersize - 1)) == 0) + if ((offset & (OCFS2_SB(inode_sb(inode))->s_clustersize - 1)) == 0) return 0; status = ocfs2_get_clusters(inode, cpos, &phys, @@ -422,7 +423,8 @@ static int ocfs2_orphan_for_truncate(struct ocfs2_super *osb, /* * Do this before setting i_size. */ - cluster_bytes = ocfs2_align_bytes_to_clusters(inode->i_sb, new_i_size); + cluster_bytes = ocfs2_align_bytes_to_clusters(inode_sb(inode), + new_i_size); status = ocfs2_zero_range_for_truncate(inode, handle, new_i_size, cluster_bytes); if (status) { @@ -453,7 +455,7 @@ int ocfs2_truncate_file(struct inode *inode, { int status = 0; struct ocfs2_dinode *fe = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); /* We trust di_bh because it comes from ocfs2_inode_lock(), which * already validated it */ @@ -576,7 +578,7 @@ static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start, struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *meta_ac = NULL; enum ocfs2_alloc_restarted why = RESTART_NONE; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_extent_tree et; int did_quota = 0; @@ -722,7 +724,7 @@ static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start, static handle_t *ocfs2_zero_start_ordered_transaction(struct inode *inode, struct buffer_head *di_bh) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); handle_t *handle = NULL; int ret = 0; @@ -849,7 +851,7 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from, put_page(page); out_commit_trans: if (handle) - ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(inode)), handle); out: return ret; } @@ -874,8 +876,8 @@ static int ocfs2_zero_extend_get_range(struct inode *inode, int rc = 0, needs_cow = 0; u32 p_cpos, zero_clusters = 0; u32 zero_cpos = - zero_start >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; - u32 last_cpos = ocfs2_clusters_for_bytes(inode->i_sb, zero_end); + zero_start >> OCFS2_SB(inode_sb(inode))->s_clustersize_bits; + u32 last_cpos = ocfs2_clusters_for_bytes(inode_sb(inode), zero_end); unsigned int num_clusters = 0; unsigned int ext_flags = 0; @@ -928,8 +930,8 @@ static int ocfs2_zero_extend_get_range(struct inode *inode, } } - *range_start = ocfs2_clusters_to_bytes(inode->i_sb, zero_cpos); - *range_end = ocfs2_clusters_to_bytes(inode->i_sb, + *range_start = ocfs2_clusters_to_bytes(inode_sb(inode), zero_cpos); + *range_end = ocfs2_clusters_to_bytes(inode_sb(inode), zero_cpos + zero_clusters); out: @@ -979,7 +981,7 @@ int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh, { int ret = 0; u64 zero_start, range_start = 0, range_end = 0; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); zero_start = ocfs2_align_bytes_to_blocks(sb, i_size_read(inode)); trace_ocfs2_zero_extend((unsigned long long)OCFS2_I(inode)->ip_blkno, @@ -1028,7 +1030,8 @@ int ocfs2_extend_no_holes(struct inode *inode, struct buffer_head *di_bh, BUG_ON(!di_bh && ocfs2_is_refcount_inode(inode)); BUG_ON(!di_bh && !(oi->ip_flags & OCFS2_INODE_SYSTEM_FILE)); - clusters_to_add = ocfs2_clusters_for_bytes(inode->i_sb, new_i_size); + clusters_to_add = ocfs2_clusters_for_bytes(inode_sb(inode), + new_i_size); if (clusters_to_add < oi->ip_clusters) clusters_to_add = 0; else @@ -1100,7 +1103,7 @@ static int ocfs2_extend_file(struct inode *inode, } } - if (ocfs2_sparse_alloc(OCFS2_SB(inode->i_sb))) + if (ocfs2_sparse_alloc(OCFS2_SB(inode_sb(inode)))) ret = ocfs2_zero_extend(inode, di_bh, new_i_size); else ret = ocfs2_extend_no_holes(inode, di_bh, new_i_size, @@ -1127,7 +1130,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) int status = 0, size_change; int inode_locked = 0; struct inode *inode = d_inode(dentry); - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); struct ocfs2_super *osb = OCFS2_SB(sb); struct buffer_head *bh = NULL; handle_t *handle = NULL; @@ -1375,7 +1378,7 @@ static int __ocfs2_write_remove_suid(struct inode *inode, { int ret; handle_t *handle; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di; trace_ocfs2_write_remove_suid( @@ -1466,8 +1469,8 @@ static int ocfs2_allocate_unwritten_extents(struct inode *inode, /* * We consider both start and len to be inclusive. */ - cpos = start >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; - clusters = ocfs2_clusters_for_bytes(inode->i_sb, start + len); + cpos = start >> OCFS2_SB(inode_sb(inode))->s_clustersize_bits; + clusters = ocfs2_clusters_for_bytes(inode_sb(inode), start + len); clusters -= cpos; while (clusters) { @@ -1519,11 +1522,12 @@ static int ocfs2_allocate_unwritten_extents(struct inode *inode, static void ocfs2_truncate_cluster_pages(struct inode *inode, u64 byte_start, u64 byte_len) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); loff_t start, end; struct address_space *mapping = inode->i_mapping; - start = (loff_t)ocfs2_align_bytes_to_clusters(inode->i_sb, byte_start); + start = (loff_t)ocfs2_align_bytes_to_clusters(inode_sb(inode), + byte_start); end = byte_start + byte_len; end = end & ~(osb->s_clustersize - 1); @@ -1539,7 +1543,7 @@ static int ocfs2_zero_partial_clusters(struct inode *inode, int ret = 0; u64 tmpend = 0; u64 end = start + len; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); unsigned int csize = osb->s_clustersize; handle_t *handle; @@ -1681,7 +1685,8 @@ static void ocfs2_calc_trunc_pos(struct inode *inode, *trunc_len = *trunc_end - trunc_start; coff = trunc_start - le32_to_cpu(rec->e_cpos); *blkno = le64_to_cpu(rec->e_blkno) + - ocfs2_clusters_to_blocks(inode->i_sb, coff); + ocfs2_clusters_to_blocks(inode_sb(inode), + coff); *trunc_end = trunc_start; } else { /* @@ -1705,7 +1710,7 @@ int ocfs2_remove_inode_range(struct inode *inode, int ret = 0, flags = 0, done = 0, i; u32 trunc_start, trunc_len, trunc_end, trunc_cpos, phys_cpos; u32 cluster_in_el; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_cached_dealloc_ctxt dealloc; struct address_space *mapping = inode->i_mapping; struct ocfs2_extent_tree et; @@ -1800,7 +1805,7 @@ int ocfs2_remove_inode_range(struct inode *inode, if (path->p_tree_depth == 0) break; - ret = ocfs2_find_cpos_for_left_leaf(inode->i_sb, + ret = ocfs2_find_cpos_for_left_leaf(inode_sb(inode), path, &cluster_in_el); if (ret) { @@ -1834,7 +1839,7 @@ int ocfs2_remove_inode_range(struct inode *inode, break; flags = rec->e_flags; - phys_cpos = ocfs2_blocks_to_clusters(inode->i_sb, blkno); + phys_cpos = ocfs2_blocks_to_clusters(inode_sb(inode), blkno); ret = ocfs2_remove_btree_range(inode, &et, trunc_cpos, phys_cpos, trunc_len, flags, @@ -1870,10 +1875,10 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode, int ret; s64 llen; loff_t size; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *di_bh = NULL; handle_t *handle; - unsigned long long max_off = inode->i_sb->s_maxbytes; + unsigned long long max_off = inode_sb(inode)->s_maxbytes; if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb)) return -EROFS; @@ -2005,7 +2010,7 @@ int ocfs2_change_file_space(struct file *file, unsigned int cmd, struct ocfs2_space_resv *sr) { struct inode *inode = file_inode(file); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); int ret; if ((cmd == OCFS2_IOC_RESVSP || cmd == OCFS2_IOC_RESVSP64) && @@ -2033,7 +2038,7 @@ static long ocfs2_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { struct inode *inode = file_inode(file); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_space_resv sr; int change_size = 1; int cmd = OCFS2_IOC_RESVSP64; @@ -2063,9 +2068,9 @@ int ocfs2_check_range_for_refcount(struct inode *inode, loff_t pos, int ret = 0; unsigned int extent_flags; u32 cpos, clusters, extent_len, phys_cpos; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb)) || + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode))) || !ocfs2_is_refcount_inode(inode) || OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) return 0; @@ -2098,7 +2103,7 @@ int ocfs2_check_range_for_refcount(struct inode *inode, loff_t pos, static int ocfs2_is_io_unaligned(struct inode *inode, size_t count, loff_t pos) { - int blockmask = inode->i_sb->s_blocksize - 1; + int blockmask = inode_sb(inode)->s_blocksize - 1; loff_t final_size = pos + count; if ((pos & blockmask) || (final_size & blockmask)) @@ -2113,9 +2118,9 @@ static int ocfs2_prepare_inode_for_refcount(struct inode *inode, { int ret; struct buffer_head *di_bh = NULL; - u32 cpos = pos >> OCFS2_SB(inode->i_sb)->s_clustersize_bits; + u32 cpos = pos >> OCFS2_SB(inode_sb(inode))->s_clustersize_bits; u32 clusters = - ocfs2_clusters_for_bytes(inode->i_sb, pos + count) - cpos; + ocfs2_clusters_for_bytes(inode_sb(inode), pos + count) - cpos; ret = ocfs2_inode_lock(inode, &di_bh, 1); if (ret) { @@ -2248,7 +2253,7 @@ static ssize_t ocfs2_file_write_iter(struct kiocb *iocb, size_t count = iov_iter_count(from); struct file *file = iocb->ki_filp; struct inode *inode = file_inode(file); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); int full_coherency = !(osb->s_mount_opt & OCFS2_MOUNT_COHERENCY_BUFFERED); void *saved_ki_complete = NULL; @@ -2518,7 +2523,7 @@ static loff_t ocfs2_file_llseek(struct file *file, loff_t offset, int whence) goto out; } - offset = vfs_setpos(file, offset, inode->i_sb->s_maxbytes); + offset = vfs_setpos(file, offset, inode_sb(inode)->s_maxbytes); out: inode_unlock(inode); diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c index d51b80edd972..ebceb88328ee 100644 --- a/fs/ocfs2/inode.c +++ b/fs/ocfs2/inode.c @@ -280,7 +280,7 @@ void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, struct ocfs2_super *osb; int use_plocks = 1; - sb = inode->i_sb; + sb = inode_sb(inode); osb = OCFS2_SB(sb); if ((osb->s_mount_opt & OCFS2_MOUNT_LOCALFLOCKS) || @@ -383,8 +383,8 @@ void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, } if (create_ino) { - inode->i_ino = ino_from_blkno(inode->i_sb, - le64_to_cpu(fe->i_blkno)); + inode->i_ino = ino_from_blkno(inode_sb(inode), + le64_to_cpu(fe->i_blkno)); /* * If we ever want to create system files from kernel, @@ -425,7 +425,7 @@ static int ocfs2_read_locked_inode(struct inode *inode, u32 generation = 0; status = -EINVAL; - sb = inode->i_sb; + sb = inode_sb(inode); osb = OCFS2_SB(sb); /* @@ -658,7 +658,7 @@ static int ocfs2_remove_inode(struct inode *inode, struct inode *inode_alloc_inode = NULL; struct buffer_head *inode_alloc_bh = NULL; handle_t *handle; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *) di_bh->b_data; inode_alloc_inode = @@ -680,7 +680,7 @@ static int ocfs2_remove_inode(struct inode *inode, } handle = ocfs2_start_trans(osb, OCFS2_DELETE_INODE_CREDITS + - ocfs2_quota_trans_credits(inode->i_sb)); + ocfs2_quota_trans_credits(inode_sb(inode))); if (IS_ERR(handle)) { status = PTR_ERR(handle); mlog_errno(status); @@ -769,7 +769,7 @@ static int ocfs2_wipe_inode(struct inode *inode, int status, orphaned_slot = -1; struct inode *orphan_dir_inode = NULL; struct buffer_head *orphan_dir_bh = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *) di_bh->b_data; if (!(OCFS2_I(inode)->ip_flags & OCFS2_INODE_SKIP_ORPHAN_DIR)) { @@ -858,7 +858,7 @@ static int ocfs2_inode_is_valid_to_delete(struct inode *inode) { int ret = 0; struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); trace_ocfs2_inode_is_valid_to_delete(current, osb->dc_task, (unsigned long long)oi->ip_blkno, @@ -1045,7 +1045,7 @@ static void ocfs2_delete_inode(struct inode *inode) * shared mode so that all nodes can still concurrently * process deletes. */ - status = ocfs2_nfs_sync_lock(OCFS2_SB(inode->i_sb), 0); + status = ocfs2_nfs_sync_lock(OCFS2_SB(inode_sb(inode)), 0); if (status < 0) { mlog(ML_ERROR, "getting nfs sync lock(PR) failed %d\n", status); ocfs2_cleanup_delete_inode(inode, 0); @@ -1117,7 +1117,7 @@ static void ocfs2_delete_inode(struct inode *inode) brelse(di_bh); bail_unlock_nfs_sync: - ocfs2_nfs_sync_unlock(OCFS2_SB(inode->i_sb), 0); + ocfs2_nfs_sync_unlock(OCFS2_SB(inode_sb(inode)), 0); bail_unblock: ocfs2_unblock_signals(&oldset); @@ -1129,13 +1129,13 @@ static void ocfs2_clear_inode(struct inode *inode) { int status; struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); clear_inode(inode); trace_ocfs2_clear_inode((unsigned long long)oi->ip_blkno, inode->i_nlink); - mlog_bug_on_msg(OCFS2_SB(inode->i_sb) == NULL, + mlog_bug_on_msg(OCFS2_SB(inode_sb(inode)) == NULL, "Inode=%lu\n", inode->i_ino); dquot_drop(inode); @@ -1150,7 +1150,7 @@ static void ocfs2_clear_inode(struct inode *inode) ocfs2_mark_lockres_freeing(osb, &oi->ip_inode_lockres); ocfs2_mark_lockres_freeing(osb, &oi->ip_open_lockres); - ocfs2_resv_discard(&OCFS2_SB(inode->i_sb)->osb_la_resmap, + ocfs2_resv_discard(&OCFS2_SB(inode_sb(inode))->osb_la_resmap, &oi->ip_la_data_resv); ocfs2_resv_init_once(&oi->ip_la_data_resv); @@ -1223,7 +1223,7 @@ static void ocfs2_clear_inode(struct inode *inode) * the journal is flushed before journal shutdown. Thus it is safe to * have inodes get cleaned up after journal shutdown. */ - jbd2_journal_release_jbd_inode(OCFS2_SB(inode->i_sb)->journal->j_journal, + jbd2_journal_release_jbd_inode(OCFS2_SB(inode_sb(inode))->journal->j_journal, &oi->ip_jinode); } @@ -1636,7 +1636,7 @@ static struct super_block *ocfs2_inode_cache_get_super(struct ocfs2_caching_info { struct ocfs2_inode_info *oi = cache_info_to_inode(ci); - return oi->vfs_inode.i_sb; + return inode_sb(&oi->vfs_inode); } static void ocfs2_inode_cache_lock(struct ocfs2_caching_info *ci) diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h index 9b955f732bca..740204816ff7 100644 --- a/fs/ocfs2/inode.h +++ b/fs/ocfs2/inode.h @@ -158,7 +158,7 @@ void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi); static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode) { - int c_to_s_bits = OCFS2_SB(inode->i_sb)->s_clustersize_bits - 9; + int c_to_s_bits = OCFS2_SB(inode_sb(inode))->s_clustersize_bits - 9; return (blkcnt_t)OCFS2_I(inode)->ip_clusters << c_to_s_bits; } diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index ab30c005cc4b..9be6d9d1390d 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c @@ -81,7 +81,7 @@ static int ocfs2_set_inode_attr(struct inode *inode, unsigned flags, unsigned mask) { struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); handle_t *handle = NULL; struct buffer_head *bh = NULL; unsigned oldflags; @@ -151,7 +151,7 @@ static int ocfs2_info_handle_blocksize(struct inode *inode, if (o2info_from_user(oib, req)) return -EFAULT; - oib.ib_blocksize = inode->i_sb->s_blocksize; + oib.ib_blocksize = inode_sb(inode)->s_blocksize; o2info_set_request_filled(&oib.ib_req); @@ -165,7 +165,7 @@ static int ocfs2_info_handle_clustersize(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_clustersize oic; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oic, req)) return -EFAULT; @@ -184,7 +184,7 @@ static int ocfs2_info_handle_maxslots(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_maxslots oim; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oim, req)) return -EFAULT; @@ -203,7 +203,7 @@ static int ocfs2_info_handle_label(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_label oil; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oil, req)) return -EFAULT; @@ -222,7 +222,7 @@ static int ocfs2_info_handle_uuid(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_uuid oiu; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oiu, req)) return -EFAULT; @@ -241,7 +241,7 @@ static int ocfs2_info_handle_fs_features(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_fs_features oif; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oif, req)) return -EFAULT; @@ -262,7 +262,7 @@ static int ocfs2_info_handle_journal_size(struct inode *inode, struct ocfs2_info_request __user *req) { struct ocfs2_info_journal_size oij; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (o2info_from_user(oij, req)) return -EFAULT; @@ -333,7 +333,7 @@ static int ocfs2_info_handle_freeinode(struct inode *inode, char namebuf[40]; int status, type = INODE_ALLOC_SYSTEM_INODE; struct ocfs2_info_freeinode *oifi = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *inode_alloc = NULL; oifi = kzalloc(sizeof(struct ocfs2_info_freeinode), GFP_KERNEL); @@ -621,7 +621,7 @@ static int ocfs2_info_handle_freefrag(struct inode *inode, int status, type = GLOBAL_BITMAP_SYSTEM_INODE; struct ocfs2_info_freefrag *oiff; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *gb_inode = NULL; oiff = kzalloc(sizeof(struct ocfs2_info_freefrag), GFP_KERNEL); @@ -924,7 +924,7 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) return ocfs2_info_handle(inode, &info, 0); case FITRIM: { - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret = 0; diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index e5dcea6cee5f..e0047816c7b7 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -1161,9 +1161,10 @@ static int ocfs2_force_read_journal(struct inode *inode) int i; u64 v_blkno, p_blkno, p_blocks, num_blocks; struct buffer_head *bh = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); - num_blocks = ocfs2_blocks_for_bytes(inode->i_sb, i_size_read(inode)); + num_blocks = ocfs2_blocks_for_bytes(inode_sb(inode), + i_size_read(inode)); v_blkno = 0; while (v_blkno < num_blocks) { status = ocfs2_extent_map_get_blocks(inode, v_blkno, diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h index 497a4171ef61..504560ccfa94 100644 --- a/fs/ocfs2/journal.h +++ b/fs/ocfs2/journal.h @@ -205,7 +205,7 @@ static inline void ocfs2_start_checkpoint(struct ocfs2_super *osb) static inline void ocfs2_checkpoint_inode(struct inode *inode) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (ocfs2_mount_local(osb)) return; @@ -626,7 +626,7 @@ static inline int ocfs2_begin_ordered_truncate(struct inode *inode, loff_t new_size) { return jbd2_journal_begin_ordered_truncate( - OCFS2_SB(inode->i_sb)->journal->j_journal, + OCFS2_SB(inode_sb(inode))->journal->j_journal, &OCFS2_I(inode)->ip_jinode, new_size); } diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c index fe0d1f9571bb..579b6a5848aa 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c @@ -330,7 +330,7 @@ int ocfs2_load_local_alloc(struct ocfs2_super *osb) } if ((la->la_size == 0) || - (le16_to_cpu(la->la_size) > ocfs2_local_alloc_size(inode->i_sb))) { + (le16_to_cpu(la->la_size) > ocfs2_local_alloc_size(inode_sb(inode)))) { mlog(ML_ERROR, "Local alloc size is invalid (la_size = %u)\n", le16_to_cpu(la->la_size)); status = -EINVAL; diff --git a/fs/ocfs2/locks.c b/fs/ocfs2/locks.c index d56f0079b858..91888b521133 100644 --- a/fs/ocfs2/locks.c +++ b/fs/ocfs2/locks.c @@ -113,7 +113,7 @@ static int ocfs2_do_funlock(struct file *file, int cmd, struct file_lock *fl) int ocfs2_flock(struct file *file, int cmd, struct file_lock *fl) { struct inode *inode = file->f_mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (!(fl->fl_flags & FL_FLOCK)) return -ENOLCK; @@ -133,7 +133,7 @@ int ocfs2_flock(struct file *file, int cmd, struct file_lock *fl) int ocfs2_lock(struct file *file, int cmd, struct file_lock *fl) { struct inode *inode = file->f_mapping->host; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (!(fl->fl_flags & FL_POSIX)) return -ENOLCK; diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c index fb9a20e3d608..83aa18171e29 100644 --- a/fs/ocfs2/mmap.c +++ b/fs/ocfs2/mmap.c @@ -136,7 +136,7 @@ static int ocfs2_page_mkwrite(struct vm_fault *vmf) sigset_t oldset; int ret; - sb_start_pagefault(inode->i_sb); + sb_start_pagefault(inode_sb(inode)); ocfs2_block_signals(&oldset); /* @@ -170,7 +170,7 @@ static int ocfs2_page_mkwrite(struct vm_fault *vmf) out: ocfs2_unblock_signals(&oldset); - sb_end_pagefault(inode->i_sb); + sb_end_pagefault(inode_sb(inode)); return ret; } diff --git a/fs/ocfs2/move_extents.c b/fs/ocfs2/move_extents.c index 7eb3b0a6347e..c652bd0a0d8a 100644 --- a/fs/ocfs2/move_extents.c +++ b/fs/ocfs2/move_extents.c @@ -62,12 +62,12 @@ static int __ocfs2_move_extent(handle_t *handle, { int ret = 0, index; struct inode *inode = context->inode; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_extent_rec *rec, replace_rec; struct ocfs2_path *path = NULL; struct ocfs2_extent_list *el; u64 ino = ocfs2_metadata_cache_owner(context->et.et_ci); - u64 old_blkno = ocfs2_clusters_to_blocks(inode->i_sb, p_cpos); + u64 old_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), p_cpos); ret = ocfs2_duplicate_clusters_by_page(handle, inode, cpos, p_cpos, new_p_cpos, len); @@ -79,7 +79,7 @@ static int __ocfs2_move_extent(handle_t *handle, memset(&replace_rec, 0, sizeof(replace_rec)); replace_rec.e_cpos = cpu_to_le32(cpos); replace_rec.e_leaf_clusters = cpu_to_le16(len); - replace_rec.e_blkno = cpu_to_le64(ocfs2_clusters_to_blocks(inode->i_sb, + replace_rec.e_blkno = cpu_to_le64(ocfs2_clusters_to_blocks(inode_sb(inode), new_p_cpos)); path = ocfs2_new_path_from_et(&context->et); @@ -99,7 +99,7 @@ static int __ocfs2_move_extent(handle_t *handle, index = ocfs2_search_extent_list(el, cpos); if (index == -1) { - ret = ocfs2_error(inode->i_sb, + ret = ocfs2_error(inode_sb(inode), "Inode %llu has an extent at cpos %u which can no longer be found\n", (unsigned long long)ino, cpos); goto out; @@ -173,7 +173,7 @@ static int ocfs2_lock_allocators_move_extents(struct inode *inode, { int ret, num_free_extents; unsigned int max_recs_needed = 2 * extents_to_split + clusters_to_move; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); num_free_extents = ocfs2_num_free_extents(et); if (num_free_extents < 0) { @@ -228,11 +228,11 @@ static int ocfs2_defrag_extent(struct ocfs2_move_extents_context *context, int ret, credits = 0, extra_blocks = 0, partial = context->partial; handle_t *handle; struct inode *inode = context->inode; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *tl_inode = osb->osb_tl_inode; struct ocfs2_refcount_tree *ref_tree = NULL; u32 new_phys_cpos, new_len; - u64 phys_blkno = ocfs2_clusters_to_blocks(inode->i_sb, phys_cpos); + u64 phys_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), phys_cpos); if ((ext_flags & OCFS2_EXT_REFCOUNTED) && *len) { BUG_ON(!ocfs2_is_refcount_inode(inode)); @@ -327,7 +327,8 @@ static int ocfs2_defrag_extent(struct ocfs2_move_extents_context *context, * Here we should write the new page out first if we are * in write-back mode. */ - ret = ocfs2_cow_sync_writeback(inode->i_sb, context->inode, cpos, *len); + ret = ocfs2_cow_sync_writeback(inode_sb(inode), context->inode, cpos, + *len); if (ret) mlog_errno(ret); @@ -367,7 +368,7 @@ static int ocfs2_find_victim_alloc_group(struct inode *inode, u64 blkno; char namebuf[40]; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *ac_bh = NULL, *gd_bh = NULL; struct ocfs2_chain_list *cl; struct ocfs2_chain_rec *rec; @@ -394,7 +395,7 @@ static int ocfs2_find_victim_alloc_group(struct inode *inode, if (type == GLOBAL_BITMAP_SYSTEM_INODE) bits_per_unit = osb->s_clustersize_bits - - inode->i_sb->s_blocksize_bits; + inode_sb(inode)->s_blocksize_bits; /* * 'vict_blkno' was out of the valid range. */ @@ -468,14 +469,14 @@ static int ocfs2_validate_and_adjust_move_goal(struct inode *inode, struct buffer_head *gd_bh = NULL; struct ocfs2_group_desc *bg; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); int c_to_b = 1 << (osb->s_clustersize_bits - - inode->i_sb->s_blocksize_bits); + inode_sb(inode)->s_blocksize_bits); /* * make goal become cluster aligned. */ - range->me_goal = ocfs2_block_to_cluster_start(inode->i_sb, + range->me_goal = ocfs2_block_to_cluster_start(inode_sb(inode), range->me_goal); /* * validate goal sits within global_bitmap, and return the victim @@ -524,7 +525,7 @@ static void ocfs2_probe_alloc_group(struct inode *inode, struct buffer_head *bh, { int i, used, last_free_bits = 0, base_bit = *goal_bit; struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *)bh->b_data; - u32 base_cpos = ocfs2_blocks_to_clusters(inode->i_sb, + u32 base_cpos = ocfs2_blocks_to_clusters(inode_sb(inode), le64_to_cpu(gd->bg_blkno)); for (i = base_bit; i < le16_to_cpu(gd->bg_bits); i++) { @@ -564,18 +565,18 @@ static int ocfs2_move_extent(struct ocfs2_move_extents_context *context, int ret, credits = 0, extra_blocks = 0, goal_bit = 0; handle_t *handle; struct inode *inode = context->inode; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *tl_inode = osb->osb_tl_inode; struct inode *gb_inode = NULL; struct buffer_head *gb_bh = NULL; struct buffer_head *gd_bh = NULL; struct ocfs2_group_desc *gd; struct ocfs2_refcount_tree *ref_tree = NULL; - u32 move_max_hop = ocfs2_blocks_to_clusters(inode->i_sb, + u32 move_max_hop = ocfs2_blocks_to_clusters(inode_sb(inode), context->range->me_threshold); u64 phys_blkno, new_phys_blkno; - phys_blkno = ocfs2_clusters_to_blocks(inode->i_sb, phys_cpos); + phys_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), phys_cpos); if ((ext_flags & OCFS2_EXT_REFCOUNTED) && len) { BUG_ON(!ocfs2_is_refcount_inode(inode)); @@ -643,7 +644,8 @@ static int ocfs2_move_extent(struct ocfs2_move_extents_context *context, goto out_unlock_tl_inode; } - new_phys_blkno = ocfs2_clusters_to_blocks(inode->i_sb, *new_phys_cpos); + new_phys_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), + *new_phys_cpos); ret = ocfs2_find_victim_alloc_group(inode, new_phys_blkno, GLOBAL_BITMAP_SYSTEM_INODE, OCFS2_INVALID_SLOT, @@ -693,7 +695,8 @@ static int ocfs2_move_extent(struct ocfs2_move_extents_context *context, * Here we should write the new page out first if we are * in write-back mode. */ - ret = ocfs2_cow_sync_writeback(inode->i_sb, context->inode, cpos, len); + ret = ocfs2_cow_sync_writeback(inode_sb(inode), context->inode, cpos, + len); if (ret) mlog_errno(ret); @@ -762,7 +765,7 @@ static int __ocfs2_move_extents_range(struct buffer_head *di_bh, struct inode *inode = context->inode; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_move_extents *range = context->range; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if ((i_size_read(inode) == 0) || (range->me_len == 0)) return 0; @@ -801,7 +804,7 @@ static int __ocfs2_move_extents_range(struct buffer_head *di_bh, if (defrag_thresh <= 1) goto done; } else - new_phys_cpos = ocfs2_blocks_to_clusters(inode->i_sb, + new_phys_cpos = ocfs2_blocks_to_clusters(inode_sb(inode), range->me_goal); mlog(0, "Inode: %llu, start: %llu, len: %llu, cstart: %u, clen: %u, " @@ -894,7 +897,7 @@ static int ocfs2_move_extents(struct ocfs2_move_extents_context *context) struct inode *inode = context->inode; struct ocfs2_dinode *di; struct buffer_head *di_bh = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (ocfs2_is_hard_readonly(osb) || ocfs2_is_soft_readonly(osb)) return -EROFS; diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index c801eddc4bf3..5e8eaf059b93 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c @@ -139,7 +139,7 @@ static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry, if (status < 0) goto bail_add; - inode = ocfs2_iget(OCFS2_SB(dir->i_sb), blkno, 0, 0); + inode = ocfs2_iget(OCFS2_SB(inode_sb(dir)), blkno, 0, 0); if (IS_ERR(inode)) { ret = ERR_PTR(-EACCES); goto bail_unlock; @@ -201,7 +201,7 @@ static struct inode *ocfs2_get_init_inode(struct inode *dir, umode_t mode) struct inode *inode; int status; - inode = new_inode(dir->i_sb); + inode = new_inode(inode_sb(dir)); if (!inode) { mlog(ML_ERROR, "new_inode failed!\n"); return ERR_PTR(-ENOMEM); @@ -273,7 +273,7 @@ static int ocfs2_mknod(struct inode *dir, } /* get our super block */ - osb = OCFS2_SB(dir->i_sb); + osb = OCFS2_SB(inode_sb(dir)); status = ocfs2_inode_lock(dir, &parent_fe_bh, 1); if (status < 0) { @@ -512,7 +512,7 @@ static int __ocfs2_mknod_locked(struct inode *dir, u64 fe_blkno, u64 suballoc_loc, u16 suballoc_bit) { int status = 0; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_dinode *fe = NULL; struct ocfs2_extent_list *fel; u16 feat; @@ -696,7 +696,7 @@ static int ocfs2_link(struct dentry *old_dentry, struct buffer_head *old_dir_bh = NULL; struct buffer_head *parent_fe_bh = NULL; struct ocfs2_dinode *fe = NULL; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_dir_lookup_result lookup = { NULL, }; sigset_t oldset; u64 old_de_ino; @@ -885,7 +885,7 @@ static int ocfs2_unlink(struct inode *dir, bool is_unlinkable = false; struct inode *inode = d_inode(dentry); struct inode *orphan_dir = NULL; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); u64 blkno; struct ocfs2_dinode *fe = NULL; struct buffer_head *fe_bh = NULL; @@ -1253,7 +1253,7 @@ static int ocfs2_rename(struct inode *old_dir, goto bail; } - osb = OCFS2_SB(old_dir->i_sb); + osb = OCFS2_SB(inode_sb(old_dir)); if (new_inode) { if (!igrab(new_inode)) @@ -1829,7 +1829,7 @@ static int ocfs2_symlink(struct inode *dir, goto bail; } - sb = dir->i_sb; + sb = inode_sb(dir); osb = OCFS2_SB(sb); l = strlen(symname) + 1; @@ -2134,7 +2134,7 @@ static int __ocfs2_prepare_orphan_dir(struct inode *orphan_dir_inode, bool dio) { int ret; - struct ocfs2_super *osb = OCFS2_SB(orphan_dir_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(orphan_dir_inode)); int namelen = dio ? (OCFS2_DIO_ORPHAN_PREFIX_LEN + OCFS2_ORPHAN_NAMELEN) : OCFS2_ORPHAN_NAMELEN; @@ -2434,7 +2434,7 @@ static int ocfs2_prep_new_orphaned_file(struct inode *dir, { int ret; u64 di_blkno; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct inode *orphan_dir = NULL; struct buffer_head *orphan_dir_bh = NULL; struct ocfs2_alloc_context *inode_ac = NULL; @@ -2500,7 +2500,7 @@ int ocfs2_create_inode_in_orphan(struct inode *dir, int status, did_quota_inode = 0; struct inode *inode = NULL; struct inode *orphan_dir = NULL; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_dinode *di = NULL; handle_t *handle = NULL; char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; @@ -2773,7 +2773,7 @@ int ocfs2_mv_orphaned_inode_to_new(struct inode *dir, int status = 0; struct buffer_head *parent_di_bh = NULL; handle_t *handle = NULL; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); struct ocfs2_dinode *dir_di, *di; struct inode *orphan_dir_inode = NULL; struct buffer_head *orphan_dir_bh = NULL; diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h index 6867eef2e06b..ec6501f88b75 100644 --- a/fs/ocfs2/ocfs2.h +++ b/fs/ocfs2/ocfs2.h @@ -485,7 +485,7 @@ static inline int ocfs2_should_order_data(struct inode *inode) { if (!S_ISREG(inode->i_mode)) return 0; - if (OCFS2_SB(inode->i_sb)->s_mount_opt & OCFS2_MOUNT_DATA_WRITEBACK) + if (OCFS2_SB(inode_sb(inode))->s_mount_opt & OCFS2_MOUNT_DATA_WRITEBACK) return 0; return 1; } diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c index 7a922190a8c7..aa80eb17f73a 100644 --- a/fs/ocfs2/quota_global.c +++ b/fs/ocfs2/quota_global.c @@ -638,7 +638,7 @@ static void qsync_work_fn(struct work_struct *work) struct ocfs2_mem_dqinfo *oinfo = container_of(work, struct ocfs2_mem_dqinfo, dqi_sync_work.work); - struct super_block *sb = oinfo->dqi_gqinode->i_sb; + struct super_block *sb = inode_sb(oinfo->dqi_gqinode); /* * We have to be careful here not to deadlock on s_umount as umount diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c index 16c42ed0dca8..25e59756fec1 100644 --- a/fs/ocfs2/quota_local.c +++ b/fs/ocfs2/quota_local.c @@ -94,7 +94,7 @@ static int ol_dqblk_chunk_off(struct super_block *sb, int c, loff_t off) static int ocfs2_modify_bh(struct inode *inode, struct buffer_head *bh, void (*modify)(struct buffer_head *, void *), void *private) { - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); handle_t *handle; int status; @@ -137,8 +137,8 @@ static int ocfs2_read_quota_block(struct inode *inode, u64 v_block, int rc = 0; struct buffer_head *tmp = *bh; - if (i_size_read(inode) >> inode->i_sb->s_blocksize_bits <= v_block) { - ocfs2_error(inode->i_sb, + if (i_size_read(inode) >> inode_sb(inode)->s_blocksize_bits <= v_block) { + ocfs2_error(inode_sb(inode), "Quota file %llu is probably corrupted! Requested to read block %Lu but file has size only %Lu\n", (unsigned long long)OCFS2_I(inode)->ip_blkno, (unsigned long long)v_block, @@ -264,7 +264,7 @@ static int ocfs2_load_local_quota_bitmaps(struct inode *inode, newchunk->qc_num = i; newchunk->qc_headerbh = NULL; status = ocfs2_read_quota_block(inode, - ol_quota_chunk_block(inode->i_sb, i), + ol_quota_chunk_block(inode_sb(inode), i), &newchunk->qc_headerbh); if (status) { mlog_errno(status); @@ -341,7 +341,7 @@ static int ocfs2_recovery_load_quota(struct inode *lqinode, int type, struct list_head *head) { - struct super_block *sb = lqinode->i_sb; + struct super_block *sb = inode_sb(lqinode); struct buffer_head *hbh; struct ocfs2_local_disk_chunk *dchunk; int i, chunks = le32_to_cpu(ldinfo->dqi_chunks); @@ -460,7 +460,7 @@ static int ocfs2_recover_local_quota_file(struct inode *lqinode, int type, struct ocfs2_quota_recovery *rec) { - struct super_block *sb = lqinode->i_sb; + struct super_block *sb = inode_sb(lqinode); struct ocfs2_mem_dqinfo *oinfo = sb_dqinfo(sb, type)->dqi_priv; struct ocfs2_local_disk_chunk *dchunk; struct ocfs2_local_disk_dqblk *dqblk; diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index ab156e35ec00..0a7f5db63ce3 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c @@ -562,7 +562,7 @@ static int ocfs2_create_refcount_tree(struct inode *inode, struct ocfs2_alloc_context *meta_ac = NULL; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *new_bh = NULL; struct ocfs2_refcount_block *rb; struct ocfs2_refcount_tree *new_tree = NULL, *tree = NULL; @@ -610,7 +610,7 @@ static int ocfs2_create_refcount_tree(struct inode *inode, goto out_commit; } - new_bh = sb_getblk(inode->i_sb, first_blkno); + new_bh = sb_getblk(inode_sb(inode), first_blkno); if (!new_bh) { ret = -ENOMEM; mlog_errno(ret); @@ -627,7 +627,7 @@ static int ocfs2_create_refcount_tree(struct inode *inode, /* Initialize ocfs2_refcount_block. */ rb = (struct ocfs2_refcount_block *)new_bh->b_data; - memset(rb, 0, inode->i_sb->s_blocksize); + memset(rb, 0, inode_sb(inode)->s_blocksize); strcpy((void *)rb, OCFS2_REFCOUNT_BLOCK_SIGNATURE); rb->rf_suballoc_slot = cpu_to_le16(meta_ac->ac_alloc_slot); rb->rf_suballoc_loc = cpu_to_le64(suballoc_loc); @@ -703,7 +703,7 @@ static int ocfs2_set_refcount_tree(struct inode *inode, handle_t *handle = NULL; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *ref_root_bh = NULL; struct ocfs2_refcount_block *rb; struct ocfs2_refcount_tree *ref_tree; @@ -765,7 +765,7 @@ int ocfs2_remove_refcount_tree(struct inode *inode, struct buffer_head *di_bh) handle_t *handle = NULL; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_inode_info *oi = OCFS2_I(inode); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_refcount_block *rb; struct inode *alloc_inode = NULL; struct buffer_head *alloc_bh = NULL; @@ -2310,7 +2310,8 @@ int ocfs2_decrease_refcount(struct inode *inode, goto out; } - ret = ocfs2_get_refcount_tree(OCFS2_SB(inode->i_sb), ref_blkno, &tree); + ret = ocfs2_get_refcount_tree(OCFS2_SB(inode_sb(inode)), ref_blkno, + &tree); if (ret) { mlog_errno(ret); goto out; @@ -2353,8 +2354,9 @@ static int ocfs2_mark_extent_refcounted(struct inode *inode, trace_ocfs2_mark_extent_refcounted(OCFS2_I(inode)->ip_blkno, cpos, len, phys); - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) { - ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode)))) { + ret = ocfs2_error(inode_sb(inode), + "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", inode->i_ino); goto out; } @@ -2534,17 +2536,18 @@ int ocfs2_prepare_refcount_change_for_del(struct inode *inode, int ret; struct buffer_head *ref_root_bh = NULL; struct ocfs2_refcount_tree *tree; - u64 start_cpos = ocfs2_blocks_to_clusters(inode->i_sb, phys_blkno); + u64 start_cpos = ocfs2_blocks_to_clusters(inode_sb(inode), phys_blkno); - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) { - ret = ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode)))) { + ret = ocfs2_error(inode_sb(inode), + "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", inode->i_ino); goto out; } BUG_ON(!ocfs2_is_refcount_inode(inode)); - ret = ocfs2_get_refcount_tree(OCFS2_SB(inode->i_sb), + ret = ocfs2_get_refcount_tree(OCFS2_SB(inode_sb(inode)), refcount_loc, &tree); if (ret) { mlog_errno(ret); @@ -2558,7 +2561,7 @@ int ocfs2_prepare_refcount_change_for_del(struct inode *inode, goto out; } - ret = ocfs2_calc_refcount_meta_credits(inode->i_sb, + ret = ocfs2_calc_refcount_meta_credits(inode_sb(inode), &tree->rf_ci, ref_root_bh, start_cpos, clusters, @@ -2646,7 +2649,7 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode, struct ocfs2_extent_block *eb = NULL; struct ocfs2_extent_rec *rec; unsigned int want_clusters, rec_end = 0; - int contig_clusters = ocfs2_cow_contig_clusters(inode->i_sb); + int contig_clusters = ocfs2_cow_contig_clusters(inode_sb(inode)); int leaf_clusters; BUG_ON(cpos + write_len > max_cpos); @@ -2662,7 +2665,7 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode, el = &eb->h_list; if (el->l_tree_depth) { - ret = ocfs2_error(inode->i_sb, + ret = ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in leaf block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -2741,7 +2744,7 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode, * want_clusters to the edge of contig_clusters * to get better I/O. */ - want_clusters = ocfs2_cow_align_length(inode->i_sb, + want_clusters = ocfs2_cow_align_length(inode_sb(inode), want_clusters); if (leaf_clusters < want_clusters) @@ -2774,7 +2777,7 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode, * contig_clusters of the front), we'll CoW the * entire extent. */ - *cow_start = ocfs2_cow_align_start(inode->i_sb, + *cow_start = ocfs2_cow_align_start(inode_sb(inode), *cow_start, cpos); *cow_len = rec_end - *cow_start; } else { @@ -2786,11 +2789,11 @@ static int ocfs2_refcount_cal_cow_clusters(struct inode *inode, * extent and goes for n*contig_clusters, * covering the entire write. */ - *cow_start = ocfs2_cow_align_start(inode->i_sb, + *cow_start = ocfs2_cow_align_start(inode_sb(inode), *cow_start, cpos); want_clusters = (cpos + write_len) - *cow_start; - want_clusters = ocfs2_cow_align_length(inode->i_sb, + want_clusters = ocfs2_cow_align_length(inode_sb(inode), want_clusters); if (*cow_start + want_clusters <= rec_end) *cow_len = want_clusters; @@ -2914,7 +2917,7 @@ int ocfs2_duplicate_clusters_by_page(handle_t *handle, u32 new_cluster, u32 new_len) { int ret = 0, partial; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); u64 new_block = ocfs2_clusters_to_blocks(sb, new_cluster); struct page *page; pgoff_t page_index; @@ -3001,7 +3004,7 @@ int ocfs2_duplicate_clusters_by_jbd(handle_t *handle, u32 new_cluster, u32 new_len) { int ret = 0; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); struct ocfs2_caching_info *ci = INODE_CACHE(inode); int i, blocks = ocfs2_clusters_to_blocks(sb, new_len); u64 old_block = ocfs2_clusters_to_blocks(sb, old_cluster); @@ -3357,10 +3360,11 @@ static int ocfs2_replace_cow(struct ocfs2_cow_context *context) u32 cow_start = context->cow_start, cow_len = context->cow_len; u32 p_cluster, num_clusters; unsigned int ext_flags; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) { - return ocfs2_error(inode->i_sb, "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode)))) { + return ocfs2_error(inode_sb(inode), + "Inode %lu want to use refcount tree, but the feature bit is not set in the super block\n", inode->i_ino); } @@ -3379,7 +3383,7 @@ static int ocfs2_replace_cow(struct ocfs2_cow_context *context) if (cow_len < num_clusters) num_clusters = cow_len; - ret = ocfs2_make_clusters_writable(inode->i_sb, context, + ret = ocfs2_make_clusters_writable(inode_sb(inode), context, cow_start, p_cluster, num_clusters, ext_flags); if (ret) { @@ -3410,7 +3414,7 @@ static int ocfs2_refcount_cow_hunk(struct inode *inode, { int ret; u32 cow_start = 0, cow_len = 0; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct buffer_head *ref_root_bh = NULL; struct ocfs2_refcount_tree *ref_tree; @@ -3604,7 +3608,7 @@ int ocfs2_refcounted_xattr_delete_need(struct inode *inode, struct ocfs2_extent_tree et; ocfs2_init_refcount_extent_tree(&et, ref_ci, ref_root_bh); - *credits += ocfs2_calc_extend_credits(inode->i_sb, + *credits += ocfs2_calc_extend_credits(inode_sb(inode), et.et_root_el); } @@ -3658,7 +3662,7 @@ int ocfs2_refcount_cow_xattr(struct inode *inode, context->cow_duplicate_clusters = ocfs2_duplicate_clusters_by_jbd; /* We need the extra credits for duplicate_clusters by jbd. */ context->extra_credits = - ocfs2_clusters_to_blocks(inode->i_sb, 1) * cow_len; + ocfs2_clusters_to_blocks(inode_sb(inode), 1) * cow_len; context->get_clusters = ocfs2_xattr_value_get_clusters; context->post_refcount = post; @@ -3689,13 +3693,13 @@ int ocfs2_add_refcount_flag(struct inode *inode, int ret; handle_t *handle; int credits = 1, ref_blocks = 0; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_alloc_context *meta_ac = NULL; /* We need to be able to handle at least an extent tree split. */ ref_blocks = ocfs2_extend_meta_needed(data_et->et_root_el); - ret = ocfs2_calc_refcount_meta_credits(inode->i_sb, + ret = ocfs2_calc_refcount_meta_credits(inode_sb(inode), ref_ci, ref_root_bh, p_cluster, num_clusters, &ref_blocks, &credits); @@ -3707,7 +3711,7 @@ int ocfs2_add_refcount_flag(struct inode *inode, trace_ocfs2_add_refcount_flag(ref_blocks, credits); if (ref_blocks) { - ret = ocfs2_reserve_new_metadata_blocks(OCFS2_SB(inode->i_sb), + ret = ocfs2_reserve_new_metadata_blocks(OCFS2_SB(inode_sb(inode)), ref_blocks, &meta_ac); if (ret) { mlog_errno(ret); @@ -3762,7 +3766,7 @@ static int ocfs2_change_ctime(struct inode *inode, handle_t *handle; struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; - handle = ocfs2_start_trans(OCFS2_SB(inode->i_sb), + handle = ocfs2_start_trans(OCFS2_SB(inode_sb(inode)), OCFS2_INODE_UPDATE_CREDITS); if (IS_ERR(handle)) { ret = PTR_ERR(handle); @@ -3784,7 +3788,7 @@ static int ocfs2_change_ctime(struct inode *inode, ocfs2_journal_dirty(handle, di_bh); out_commit: - ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(inode)), handle); out: return ret; } @@ -3796,7 +3800,7 @@ static int ocfs2_attach_refcount_tree(struct inode *inode, struct buffer_head *ref_root_bh = NULL; struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_refcount_tree *ref_tree; unsigned int ext_flags; loff_t size; @@ -3829,7 +3833,7 @@ static int ocfs2_attach_refcount_tree(struct inode *inode, ocfs2_init_dinode_extent_tree(&di_et, INODE_CACHE(inode), di_bh); size = i_size_read(inode); - clusters = ocfs2_clusters_for_bytes(inode->i_sb, size); + clusters = ocfs2_clusters_for_bytes(inode_sb(inode), size); cpos = 0; while (cpos < clusters) { @@ -3902,10 +3906,10 @@ static int ocfs2_add_refcounted_extent(struct inode *inode, int ret; handle_t *handle; int credits = 0; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_alloc_context *meta_ac = NULL; - ret = ocfs2_lock_refcount_allocators(inode->i_sb, + ret = ocfs2_lock_refcount_allocators(inode_sb(inode), p_cluster, num_clusters, et, ref_ci, ref_root_bh, &meta_ac, @@ -3923,7 +3927,7 @@ static int ocfs2_add_refcounted_extent(struct inode *inode, } ret = ocfs2_insert_extent(handle, et, cpos, - ocfs2_clusters_to_blocks(inode->i_sb, p_cluster), + ocfs2_clusters_to_blocks(inode_sb(inode), p_cluster), num_clusters, ext_flags, meta_ac); if (ret) { mlog_errno(ret); @@ -3958,7 +3962,7 @@ static int ocfs2_duplicate_inline_data(struct inode *s_inode, { int ret; handle_t *handle; - struct ocfs2_super *osb = OCFS2_SB(s_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(s_inode)); struct ocfs2_dinode *s_di = (struct ocfs2_dinode *)s_bh->b_data; struct ocfs2_dinode *t_di = (struct ocfs2_dinode *)t_bh->b_data; @@ -4010,7 +4014,7 @@ static int ocfs2_duplicate_extent_list(struct inode *s_inode, ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(t_inode), t_bh); size = i_size_read(s_inode); - clusters = ocfs2_clusters_for_bytes(s_inode->i_sb, size); + clusters = ocfs2_clusters_for_bytes(inode_sb(s_inode), size); cpos = 0; while (cpos < clusters) { @@ -4058,7 +4062,7 @@ static int ocfs2_complete_reflink(struct inode *s_inode, struct ocfs2_dinode *di = (struct ocfs2_dinode *)t_bh->b_data; loff_t size = i_size_read(s_inode); - handle = ocfs2_start_trans(OCFS2_SB(t_inode->i_sb), + handle = ocfs2_start_trans(OCFS2_SB(inode_sb(t_inode)), OCFS2_INODE_UPDATE_CREDITS); if (IS_ERR(handle)) { ret = PTR_ERR(handle); @@ -4113,7 +4117,7 @@ static int ocfs2_complete_reflink(struct inode *s_inode, ocfs2_journal_dirty(handle, t_bh); out_commit: - ocfs2_commit_trans(OCFS2_SB(t_inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(t_inode)), handle); return ret; } @@ -4126,7 +4130,7 @@ static int ocfs2_create_reflink_node(struct inode *s_inode, int ret; struct buffer_head *ref_root_bh = NULL; struct ocfs2_cached_dealloc_ctxt dealloc; - struct ocfs2_super *osb = OCFS2_SB(s_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(s_inode)); struct ocfs2_refcount_block *rb; struct ocfs2_dinode *di = (struct ocfs2_dinode *)s_bh->b_data; struct ocfs2_refcount_tree *ref_tree; @@ -4255,7 +4259,7 @@ static int ocfs2_reflink(struct dentry *old_dentry, struct inode *dir, struct buffer_head *old_bh = NULL; struct inode *new_orphan_inode = NULL; - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode)))) return -EOPNOTSUPP; @@ -4360,7 +4364,7 @@ static int ocfs2_vfs_reflink(struct dentry *old_dentry, struct inode *dir, if (error) return error; - if (dir->i_sb != inode->i_sb) + if (inode_sb(dir) != inode_sb(inode)) return -EXDEV; /* @@ -4416,7 +4420,7 @@ int ocfs2_reflink_ioctl(struct inode *inode, struct path old_path, new_path; int error; - if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb))) + if (!ocfs2_refcount_tree(OCFS2_SB(inode_sb(inode)))) return -EOPNOTSUPP; error = user_path_at(AT_FDCWD, oldname, 0, &old_path); @@ -4462,7 +4466,7 @@ static int ocfs2_reflink_update_dest(struct inode *dest, if (newlen <= i_size_read(dest)) return 0; - handle = ocfs2_start_trans(OCFS2_SB(dest->i_sb), + handle = ocfs2_start_trans(OCFS2_SB(inode_sb(dest)), OCFS2_INODE_UPDATE_CREDITS); if (IS_ERR(handle)) { ret = PTR_ERR(handle); @@ -4484,7 +4488,7 @@ static int ocfs2_reflink_update_dest(struct inode *dest, } out_commit: - ocfs2_commit_trans(OCFS2_SB(dest->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(dest)), handle); return ret; } @@ -4509,14 +4513,14 @@ static int ocfs2_reflink_remap_extent(struct inode *s_inode, unsigned int ext_flags; int ret = 0; - osb = OCFS2_SB(s_inode->i_sb); + osb = OCFS2_SB(inode_sb(s_inode)); dis = (struct ocfs2_dinode *)s_bh->b_data; ocfs2_init_dinode_extent_tree(&s_et, INODE_CACHE(s_inode), s_bh); ocfs2_init_dinode_extent_tree(&t_et, INODE_CACHE(t_inode), t_bh); - spos = ocfs2_bytes_to_clusters(s_inode->i_sb, pos_in); - tpos = ocfs2_bytes_to_clusters(t_inode->i_sb, pos_out); - slast = ocfs2_clusters_for_bytes(s_inode->i_sb, pos_in + len); + spos = ocfs2_bytes_to_clusters(inode_sb(s_inode), pos_in); + tpos = ocfs2_bytes_to_clusters(inode_sb(t_inode), pos_out); + slast = ocfs2_clusters_for_bytes(inode_sb(s_inode), pos_in + len); while (spos < slast) { if (fatal_signal_pending(current)) { @@ -4535,8 +4539,9 @@ static int ocfs2_reflink_remap_extent(struct inode *s_inode, num_clusters = min_t(u32, num_clusters, slast - spos); /* Punch out the dest range. */ - pstart = ocfs2_clusters_to_bytes(t_inode->i_sb, tpos); - plen = ocfs2_clusters_to_bytes(t_inode->i_sb, num_clusters); + pstart = ocfs2_clusters_to_bytes(inode_sb(t_inode), tpos); + plen = ocfs2_clusters_to_bytes(inode_sb(t_inode), + num_clusters); ret = ocfs2_remove_inode_range(t_inode, t_bh, pstart, plen); if (ret) { mlog_errno(ret); @@ -4612,7 +4617,7 @@ static int ocfs2_reflink_remap_blocks(struct inode *s_inode, struct ocfs2_dinode *dit; int ret; - osb = OCFS2_SB(s_inode->i_sb); + osb = OCFS2_SB(inode_sb(s_inode)); dis = (struct ocfs2_dinode *)s_bh->b_data; dit = (struct ocfs2_dinode *)t_bh->b_data; ocfs2_init_dealloc_ctxt(&dealloc); @@ -4811,7 +4816,7 @@ int ocfs2_reflink_remap_range(struct file *file_in, { struct inode *inode_in = file_inode(file_in); struct inode *inode_out = file_inode(file_out); - struct ocfs2_super *osb = OCFS2_SB(inode_in->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode_in)); struct buffer_head *in_bh = NULL, *out_bh = NULL; bool same_inode = (inode_in == inode_out); ssize_t ret; diff --git a/fs/ocfs2/resize.c b/fs/ocfs2/resize.c index 18451e0fab81..ae75edf88a65 100644 --- a/fs/ocfs2/resize.c +++ b/fs/ocfs2/resize.c @@ -63,8 +63,8 @@ static u16 ocfs2_calc_new_backup_super(struct inode *inode, u64 blkno, gd_blkno, lgd_blkno = le64_to_cpu(gd->bg_blkno); for (i = 0; i < OCFS2_MAX_BACKUP_SUPERBLOCKS; i++) { - blkno = ocfs2_backup_super_blkno(inode->i_sb, i); - cluster = ocfs2_blocks_to_clusters(inode->i_sb, blkno); + blkno = ocfs2_backup_super_blkno(inode_sb(inode), i); + cluster = ocfs2_blocks_to_clusters(inode_sb(inode), blkno); gd_blkno = ocfs2_which_cluster_group(inode, cluster); if (gd_blkno < lgd_blkno) @@ -73,7 +73,8 @@ static u16 ocfs2_calc_new_backup_super(struct inode *inode, break; /* check if already done backup super */ - lgd_cluster = ocfs2_blocks_to_clusters(inode->i_sb, lgd_blkno); + lgd_cluster = ocfs2_blocks_to_clusters(inode_sb(inode), + lgd_blkno); lgd_cluster += old_bg_clusters; if (lgd_cluster >= cluster) continue; @@ -98,7 +99,7 @@ static int ocfs2_update_last_group_and_inode(handle_t *handle, int new_clusters) { int ret = 0; - struct ocfs2_super *osb = OCFS2_SB(bm_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(bm_inode)); struct ocfs2_dinode *fe = (struct ocfs2_dinode *) bm_bh->b_data; struct ocfs2_chain_list *cl = &fe->id2.i_chain; struct ocfs2_chain_rec *cr; @@ -190,12 +191,12 @@ static int update_backups(struct inode * inode, u32 clusters, char *data) u64 blkno; struct buffer_head *backup = NULL; struct ocfs2_dinode *backup_di = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); /* calculate the real backups we need to update. */ for (i = 0; i < OCFS2_MAX_BACKUP_SUPERBLOCKS; i++) { - blkno = ocfs2_backup_super_blkno(inode->i_sb, i); - cluster = ocfs2_blocks_to_clusters(inode->i_sb, blkno); + blkno = ocfs2_backup_super_blkno(inode_sb(inode), i); + cluster = ocfs2_blocks_to_clusters(inode_sb(inode), blkno); if (cluster >= clusters) break; @@ -205,7 +206,7 @@ static int update_backups(struct inode * inode, u32 clusters, char *data) break; } - memcpy(backup->b_data, data, inode->i_sb->s_blocksize); + memcpy(backup->b_data, data, inode_sb(inode)->s_blocksize); backup_di = (struct ocfs2_dinode *)backup->b_data; backup_di->i_blkno = cpu_to_le64(blkno); @@ -229,7 +230,7 @@ static void ocfs2_update_super_and_backups(struct inode *inode, u32 clusters = 0; struct buffer_head *super_bh = NULL; struct ocfs2_dinode *super_di = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); /* * update the superblock last. @@ -279,7 +280,7 @@ int ocfs2_group_extend(struct inode * inode, int new_clusters) struct inode *main_bm_inode = NULL; struct ocfs2_dinode *fe = NULL; struct ocfs2_group_desc *group = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); u16 cl_bpc; u32 first_new_cluster; u64 lgd_blkno; @@ -392,7 +393,7 @@ static int ocfs2_check_new_group(struct inode *inode, (struct ocfs2_group_desc *)group_bh->b_data; u16 cl_bpc = le16_to_cpu(di->id2.i_chain.cl_bpc); - ret = ocfs2_check_group_descriptor(inode->i_sb, di, group_bh); + ret = ocfs2_check_group_descriptor(inode_sb(inode), di, group_bh); if (ret) goto out; @@ -428,7 +429,7 @@ static int ocfs2_verify_group_and_input(struct inode *inode, u16 cl_count = le16_to_cpu(di->id2.i_chain.cl_count); u16 cl_cpg = le16_to_cpu(di->id2.i_chain.cl_cpg); u16 next_free = le16_to_cpu(di->id2.i_chain.cl_next_free_rec); - u32 cluster = ocfs2_blocks_to_clusters(inode->i_sb, input->group); + u32 cluster = ocfs2_blocks_to_clusters(inode_sb(inode), input->group); u32 total_clusters = le32_to_cpu(di->i_clusters); int ret = -EINVAL; @@ -466,7 +467,7 @@ int ocfs2_group_add(struct inode *inode, struct ocfs2_new_group_input *input) struct buffer_head *main_bm_bh = NULL; struct inode *main_bm_inode = NULL; struct ocfs2_dinode *fe = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct buffer_head *group_bh = NULL; struct ocfs2_group_desc *group = NULL; struct ocfs2_chain_list *cl; diff --git a/fs/ocfs2/slot_map.c b/fs/ocfs2/slot_map.c index d7407994f308..3c0018119153 100644 --- a/fs/ocfs2/slot_map.c +++ b/fs/ocfs2/slot_map.c @@ -363,7 +363,7 @@ static int ocfs2_map_slot_buffers(struct ocfs2_super *osb, if (status) goto bail; - blocks = ocfs2_blocks_for_bytes(si->si_inode->i_sb, bytes); + blocks = ocfs2_blocks_for_bytes(inode_sb(si->si_inode), bytes); BUG_ON(blocks > UINT_MAX); si->si_blocks = blocks; if (!si->si_blocks) diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c index d8f5f6ce99dc..01ec1d59b2d6 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c @@ -319,7 +319,7 @@ int ocfs2_read_group_descriptor(struct inode *inode, struct ocfs2_dinode *di, if (rc) goto out; - rc = ocfs2_validate_gd_parent(inode->i_sb, di, tmp, 0); + rc = ocfs2_validate_gd_parent(inode_sb(inode), di, tmp, 0); if (rc) { brelse(tmp); goto out; @@ -364,12 +364,12 @@ static int ocfs2_block_group_fill(handle_t *handle, struct ocfs2_chain_list *cl) { int status = 0; - struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(alloc_inode)); struct ocfs2_group_desc *bg = (struct ocfs2_group_desc *) bg_bh->b_data; - struct super_block * sb = alloc_inode->i_sb; + struct super_block * sb = inode_sb(alloc_inode); if (((unsigned long long) bg_bh->b_blocknr) != group_blkno) { - status = ocfs2_error(alloc_inode->i_sb, + status = ocfs2_error(inode_sb(alloc_inode), "group block (%llu) != b_blocknr (%llu)\n", (unsigned long long)group_blkno, (unsigned long long) bg_bh->b_blocknr); @@ -504,7 +504,7 @@ static int ocfs2_block_group_grow_discontig(handle_t *handle, unsigned int min_bits) { int status; - struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(alloc_inode)); struct ocfs2_group_desc *bg = (struct ocfs2_group_desc *)bg_bh->b_data; unsigned int needed = le16_to_cpu(cl->cl_cpg) - @@ -600,7 +600,7 @@ ocfs2_block_group_alloc_discontig(handle_t *handle, unsigned int min_bits = le16_to_cpu(cl->cl_cpg) >> 1; struct buffer_head *bg_bh = NULL; unsigned int alloc_rec = ocfs2_find_smallest_chain(cl); - struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(alloc_inode)); if (!ocfs2_supports_discontig_bg(osb)) { status = -ENOSPC; @@ -750,8 +750,8 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb, spin_lock(&OCFS2_I(alloc_inode)->ip_lock); OCFS2_I(alloc_inode)->ip_clusters = le32_to_cpu(fe->i_clusters); - fe->i_size = cpu_to_le64(ocfs2_clusters_to_bytes(alloc_inode->i_sb, - le32_to_cpu(fe->i_clusters))); + fe->i_size = cpu_to_le64(ocfs2_clusters_to_bytes(inode_sb(alloc_inode), + le32_to_cpu(fe->i_clusters))); spin_unlock(&OCFS2_I(alloc_inode)->ip_lock); i_size_write(alloc_inode, le64_to_cpu(fe->i_size)); alloc_inode->i_blocks = ocfs2_inode_sector_count(alloc_inode); @@ -818,7 +818,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb, BUG_ON(!OCFS2_IS_VALID_DINODE(fe)); if (!(fe->i_flags & cpu_to_le32(OCFS2_CHAIN_FL))) { - status = ocfs2_error(alloc_inode->i_sb, + status = ocfs2_error(inode_sb(alloc_inode), "Invalid chain allocator %llu\n", (unsigned long long)le64_to_cpu(fe->i_blkno)); goto bail; @@ -1379,7 +1379,8 @@ int ocfs2_block_group_set_bits(handle_t *handle, le16_add_cpu(&bg->bg_free_bits_count, -num_bits); if (le16_to_cpu(bg->bg_free_bits_count) > le16_to_cpu(bg->bg_bits)) { - return ocfs2_error(alloc_inode->i_sb, "Group descriptor # %llu has bit count %u but claims %u are freed. num_bits %d\n", + return ocfs2_error(inode_sb(alloc_inode), + "Group descriptor # %llu has bit count %u but claims %u are freed. num_bits %d\n", (unsigned long long)le64_to_cpu(bg->bg_blkno), le16_to_cpu(bg->bg_bits), le16_to_cpu(bg->bg_free_bits_count), @@ -1496,7 +1497,7 @@ static int ocfs2_cluster_group_search(struct inode *inode, int ret; u64 blkoff; struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *) group_bh->b_data; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); unsigned int max_bits, gd_cluster_off; BUG_ON(!ocfs2_is_cluster_bitmap(inode)); @@ -1510,7 +1511,7 @@ static int ocfs2_cluster_group_search(struct inode *inode, * update the dinode cluster count, then we don't want * to trust any clusters past it, regardless of what * the group descriptor says. */ - gd_cluster_off = ocfs2_blocks_to_clusters(inode->i_sb, + gd_cluster_off = ocfs2_blocks_to_clusters(inode_sb(inode), le64_to_cpu(gd->bg_blkno)); if ((gd_cluster_off + max_bits) > OCFS2_I(inode)->ip_clusters) { @@ -1521,14 +1522,14 @@ static int ocfs2_cluster_group_search(struct inode *inode, OCFS2_I(inode)->ip_clusters, max_bits); } - ret = ocfs2_block_group_find_clear_bits(OCFS2_SB(inode->i_sb), + ret = ocfs2_block_group_find_clear_bits(OCFS2_SB(inode_sb(inode)), group_bh, bits_wanted, max_bits, res); if (ret) return ret; if (max_block) { - blkoff = ocfs2_clusters_to_blocks(inode->i_sb, + blkoff = ocfs2_clusters_to_blocks(inode_sb(inode), gd_cluster_off + res->sr_bit_offset + res->sr_bits); @@ -1571,7 +1572,7 @@ static int ocfs2_block_group_search(struct inode *inode, BUG_ON(ocfs2_is_cluster_bitmap(inode)); if (bg->bg_free_bits_count) { - ret = ocfs2_block_group_find_clear_bits(OCFS2_SB(inode->i_sb), + ret = ocfs2_block_group_find_clear_bits(OCFS2_SB(inode_sb(inode)), group_bh, bits_wanted, le16_to_cpu(bg->bg_bits), res); @@ -1667,7 +1668,7 @@ static void ocfs2_bg_discontig_fix_result(struct ocfs2_alloc_context *ac, res->sr_blkno = res->sr_bg_blkno + res->sr_bit_offset; res->sr_bg_blkno = 0; /* Clear it for contig block groups */ - if (!ocfs2_supports_discontig_bg(OCFS2_SB(ac->ac_inode->i_sb)) || + if (!ocfs2_supports_discontig_bg(OCFS2_SB(inode_sb(ac->ac_inode))) || !bg->bg_list.l_next_free_rec) return; @@ -1913,7 +1914,7 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_alloc_context *ac, if (le32_to_cpu(fe->id1.bitmap1.i_used) >= le32_to_cpu(fe->id1.bitmap1.i_total)) { - status = ocfs2_error(ac->ac_inode->i_sb, + status = ocfs2_error(inode_sb(ac->ac_inode), "Chain allocator dinode %llu has %u used bits but only %u total\n", (unsigned long long)le64_to_cpu(fe->i_blkno), le32_to_cpu(fe->id1.bitmap1.i_used), @@ -2023,7 +2024,7 @@ int ocfs2_claim_metadata(handle_t *handle, mlog_errno(status); goto bail; } - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs); + atomic_inc(&OCFS2_SB(inode_sb(ac->ac_inode))->alloc_stats.bg_allocs); *suballoc_loc = res.sr_bg_blkno; *suballoc_bit_start = res.sr_bit_offset; @@ -2099,7 +2100,8 @@ int ocfs2_find_new_inode_loc(struct inode *dir, * The handle started here is for chain relink. Alternatively, * we could just disable relink for these calls. */ - handle = ocfs2_start_trans(OCFS2_SB(dir->i_sb), OCFS2_SUBALLOC_ALLOC); + handle = ocfs2_start_trans(OCFS2_SB(inode_sb(dir)), + OCFS2_SUBALLOC_ALLOC); if (IS_ERR(handle)) { ret = PTR_ERR(handle); handle = NULL; @@ -2125,7 +2127,7 @@ int ocfs2_find_new_inode_loc(struct inode *dir, ocfs2_update_inode_fsync_trans(handle, dir, 0); out: if (handle) - ocfs2_commit_trans(OCFS2_SB(dir->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(dir)), handle); if (ret) kfree(res); @@ -2189,7 +2191,7 @@ int ocfs2_claim_new_inode_at_loc(handle_t *handle, trace_ocfs2_claim_new_inode_at_loc((unsigned long long)di_blkno, res->sr_bits); - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs); + atomic_inc(&OCFS2_SB(inode_sb(ac->ac_inode))->alloc_stats.bg_allocs); BUG_ON(res->sr_bits != 1); @@ -2231,7 +2233,7 @@ int ocfs2_claim_new_inode(handle_t *handle, mlog_errno(status); goto bail; } - atomic_inc(&OCFS2_SB(ac->ac_inode->i_sb)->alloc_stats.bg_allocs); + atomic_inc(&OCFS2_SB(inode_sb(ac->ac_inode))->alloc_stats.bg_allocs); BUG_ON(res.sr_bits != 1); @@ -2253,13 +2255,13 @@ static inline u32 ocfs2_desc_bitmap_to_cluster_off(struct inode *inode, u64 bg_blkno, u16 bg_bit_off) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); u32 cluster = 0; BUG_ON(!ocfs2_is_cluster_bitmap(inode)); if (bg_blkno != osb->first_cluster_group_blkno) - cluster = ocfs2_blocks_to_clusters(inode->i_sb, bg_blkno); + cluster = ocfs2_blocks_to_clusters(inode_sb(inode), bg_blkno); cluster += (u32) bg_bit_off; return cluster; } @@ -2268,7 +2270,7 @@ static inline u32 ocfs2_desc_bitmap_to_cluster_off(struct inode *inode, * and return that block offset. */ u64 ocfs2_which_cluster_group(struct inode *inode, u32 cluster) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); u32 group_no; BUG_ON(!ocfs2_is_cluster_bitmap(inode)); @@ -2276,7 +2278,7 @@ u64 ocfs2_which_cluster_group(struct inode *inode, u32 cluster) group_no = cluster / osb->bitmap_cpg; if (!group_no) return osb->first_cluster_group_blkno; - return ocfs2_clusters_to_blocks(inode->i_sb, + return ocfs2_clusters_to_blocks(inode_sb(inode), group_no * osb->bitmap_cpg); } @@ -2287,7 +2289,7 @@ static inline void ocfs2_block_to_cluster_group(struct inode *inode, u64 *bg_blkno, u16 *bg_bit_off) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); u32 data_cluster = ocfs2_blocks_to_clusters(osb->sb, data_blkno); BUG_ON(!ocfs2_is_cluster_bitmap(inode)); @@ -2318,7 +2320,7 @@ int __ocfs2_claim_clusters(handle_t *handle, int status; unsigned int bits_wanted = max_clusters; struct ocfs2_suballoc_result res = { .sr_blkno = 0, }; - struct ocfs2_super *osb = OCFS2_SB(ac->ac_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(ac->ac_inode)); BUG_ON(ac->ac_bits_given >= ac->ac_bits_wanted); @@ -2440,7 +2442,8 @@ static int ocfs2_block_group_clear_bits(handle_t *handle, if (le16_to_cpu(bg->bg_free_bits_count) > le16_to_cpu(bg->bg_bits)) { if (undo_fn) jbd_unlock_bh_state(group_bh); - return ocfs2_error(alloc_inode->i_sb, "Group descriptor # %llu has bit count %u but claims %u are freed. num_bits %d\n", + return ocfs2_error(inode_sb(alloc_inode), + "Group descriptor # %llu has bit count %u but claims %u are freed. num_bits %d\n", (unsigned long long)le64_to_cpu(bg->bg_blkno), le16_to_cpu(bg->bg_bits), le16_to_cpu(bg->bg_free_bits_count), @@ -2571,9 +2574,9 @@ static int _ocfs2_free_clusters(handle_t *handle, * about looping on them. * This is expensive. We can safely remove once this stuff has * gotten tested really well. */ - BUG_ON(start_blk != ocfs2_clusters_to_blocks(bitmap_inode->i_sb, - ocfs2_blocks_to_clusters(bitmap_inode->i_sb, - start_blk))); + BUG_ON(start_blk != ocfs2_clusters_to_blocks(inode_sb(bitmap_inode), + ocfs2_blocks_to_clusters(inode_sb(bitmap_inode), + start_blk))); ocfs2_block_to_cluster_group(bitmap_inode, start_blk, &bg_blkno, @@ -2591,7 +2594,7 @@ static int _ocfs2_free_clusters(handle_t *handle, goto out; } - ocfs2_local_alloc_seen_free_bits(OCFS2_SB(bitmap_inode->i_sb), + ocfs2_local_alloc_seen_free_bits(OCFS2_SB(inode_sb(bitmap_inode)), num_clusters); out: @@ -2691,7 +2694,7 @@ int ocfs2_lock_allocators(struct inode *inode, { int ret = 0, num_free_extents; unsigned int max_recs_needed = clusters_to_add + 2 * extents_to_split; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); *meta_ac = NULL; if (data_ac) diff --git a/fs/ocfs2/suballoc.h b/fs/ocfs2/suballoc.h index 2d2501767c0c..95ad9e247205 100644 --- a/fs/ocfs2/suballoc.h +++ b/fs/ocfs2/suballoc.h @@ -178,7 +178,7 @@ static inline u32 ocfs2_cluster_from_desc(struct ocfs2_super *osb, static inline int ocfs2_is_cluster_bitmap(struct inode *inode) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); return osb->bitmap_blkno == OCFS2_I(inode)->ip_blkno; } diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index 94cfacc9bad7..a3386fcdf699 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c @@ -72,7 +72,7 @@ static int ocfs2_fast_symlink_readpage(struct file *unused, struct page *page) fe = (struct ocfs2_dinode *) bh->b_data; link = (char *) fe->id2.i_symlink; /* will be less than a page size */ - len = strnlen(link, ocfs2_fast_symlink_chars(inode->i_sb)); + len = strnlen(link, ocfs2_fast_symlink_chars(inode_sb(inode))); kaddr = kmap_atomic(page); memcpy(kaddr, link, len + 1); kunmap_atomic(kaddr); diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c index c261c1dfd374..a81dc212b215 100644 --- a/fs/ocfs2/xattr.c +++ b/fs/ocfs2/xattr.c @@ -88,7 +88,7 @@ struct ocfs2_xattr_set_ctxt { #define OCFS2_XATTR_FREE_IN_IBODY (OCFS2_MIN_XATTR_INLINE_SIZE \ - sizeof(struct ocfs2_xattr_header) \ - OCFS2_XATTR_HEADER_GAP) -#define OCFS2_XATTR_FREE_IN_BLOCK(ptr) ((ptr)->i_sb->s_blocksize \ +#define OCFS2_XATTR_FREE_IN_BLOCK(ptr) (inode_sb((ptr))->s_blocksize \ - sizeof(struct ocfs2_xattr_block) \ - sizeof(struct ocfs2_xattr_header) \ - OCFS2_XATTR_HEADER_GAP) @@ -330,7 +330,7 @@ static inline u16 ocfs2_blocks_per_xattr_bucket(struct super_block *sb) static struct ocfs2_xattr_bucket *ocfs2_xattr_bucket_new(struct inode *inode) { struct ocfs2_xattr_bucket *bucket; - int blks = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + int blks = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); BUG_ON(blks > OCFS2_XATTR_MAX_BLOCKS_PER_BUCKET); @@ -374,7 +374,7 @@ static int ocfs2_init_xattr_bucket(struct ocfs2_xattr_bucket *bucket, int i, rc = 0; for (i = 0; i < bucket->bu_blocks; i++) { - bucket->bu_bhs[i] = sb_getblk(bucket->bu_inode->i_sb, + bucket->bu_bhs[i] = sb_getblk(inode_sb(bucket->bu_inode), xb_blkno + i); if (!bucket->bu_bhs[i]) { rc = -ENOMEM; @@ -410,12 +410,12 @@ static int ocfs2_read_xattr_bucket(struct ocfs2_xattr_bucket *bucket, bucket->bu_blocks, bucket->bu_bhs, 0, NULL); if (!rc) { - spin_lock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock); - rc = ocfs2_validate_meta_ecc_bhs(bucket->bu_inode->i_sb, + spin_lock(&OCFS2_SB(inode_sb(bucket->bu_inode))->osb_xattr_lock); + rc = ocfs2_validate_meta_ecc_bhs(inode_sb(bucket->bu_inode), bucket->bu_bhs, bucket->bu_blocks, &bucket_xh(bucket)->xh_check); - spin_unlock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock); + spin_unlock(&OCFS2_SB(inode_sb(bucket->bu_inode))->osb_xattr_lock); if (rc) mlog_errno(rc); } @@ -449,11 +449,11 @@ static void ocfs2_xattr_bucket_journal_dirty(handle_t *handle, { int i; - spin_lock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock); - ocfs2_compute_meta_ecc_bhs(bucket->bu_inode->i_sb, + spin_lock(&OCFS2_SB(inode_sb(bucket->bu_inode))->osb_xattr_lock); + ocfs2_compute_meta_ecc_bhs(inode_sb(bucket->bu_inode), bucket->bu_bhs, bucket->bu_blocks, &bucket_xh(bucket)->xh_check); - spin_unlock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock); + spin_unlock(&OCFS2_SB(inode_sb(bucket->bu_inode))->osb_xattr_lock); for (i = 0; i < bucket->bu_blocks; i++) ocfs2_journal_dirty(handle, bucket->bu_bhs[i]); @@ -463,7 +463,7 @@ static void ocfs2_xattr_bucket_copy_data(struct ocfs2_xattr_bucket *dest, struct ocfs2_xattr_bucket *src) { int i; - int blocksize = src->bu_inode->i_sb->s_blocksize; + int blocksize = inode_sb(src->bu_inode)->s_blocksize; BUG_ON(dest->bu_blocks != src->bu_blocks); BUG_ON(dest->bu_inode != src->bu_inode); @@ -552,7 +552,7 @@ static u32 ocfs2_xattr_name_hash(struct inode *inode, int name_len) { /* Get hash value of uuid from super block */ - u32 hash = OCFS2_SB(inode->i_sb)->uuid_hash; + u32 hash = OCFS2_SB(inode_sb(inode))->uuid_hash; int i; /* hash extended attribute name */ @@ -590,7 +590,7 @@ int ocfs2_calc_security_init(struct inode *dir, struct ocfs2_alloc_context **xattr_ac) { int ret = 0; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); int s_size = ocfs2_xattr_entry_real_size(strlen(si->name), si->value_len); @@ -599,7 +599,7 @@ int ocfs2_calc_security_init(struct inode *dir, * 256(name) + 80(value) + 16(entry) = 352 bytes, * So reserve one metadata block for it is ok. */ - if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE || + if (inode_sb(dir)->s_blocksize == OCFS2_MIN_BLOCKSIZE || s_size > OCFS2_XATTR_FREE_IN_IBODY) { ret = ocfs2_reserve_new_metadata_blocks(osb, 1, xattr_ac); if (ret) { @@ -611,10 +611,10 @@ int ocfs2_calc_security_init(struct inode *dir, /* reserve clusters for xattr value which will be set in B tree*/ if (si->value_len > OCFS2_XATTR_INLINE_SIZE) { - int new_clusters = ocfs2_clusters_for_bytes(dir->i_sb, + int new_clusters = ocfs2_clusters_for_bytes(inode_sb(dir), si->value_len); - *xattr_credits += ocfs2_clusters_to_blocks(dir->i_sb, + *xattr_credits += ocfs2_clusters_to_blocks(inode_sb(dir), new_clusters); *want_clusters += new_clusters; } @@ -630,7 +630,7 @@ int ocfs2_calc_xattr_init(struct inode *dir, int *want_meta) { int ret = 0; - struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(dir)); int s_size = 0, a_size = 0, acl_len = 0, new_clusters; if (si->enable) @@ -669,17 +669,17 @@ int ocfs2_calc_xattr_init(struct inode *dir, * we choose to reserve the entire inline area for * directory contents and force an external xattr block. */ - if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE || + if (inode_sb(dir)->s_blocksize == OCFS2_MIN_BLOCKSIZE || (S_ISDIR(mode) && ocfs2_supports_inline_data(osb)) || (s_size + a_size) > OCFS2_XATTR_FREE_IN_IBODY) { *want_meta = *want_meta + 1; *xattr_credits += OCFS2_XATTR_BLOCK_CREATE_CREDITS; } - if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE && + if (inode_sb(dir)->s_blocksize == OCFS2_MIN_BLOCKSIZE && (s_size + a_size) > OCFS2_XATTR_FREE_IN_BLOCK(dir)) { *want_clusters += 1; - *xattr_credits += ocfs2_blocks_per_xattr_bucket(dir->i_sb); + *xattr_credits += ocfs2_blocks_per_xattr_bucket(inode_sb(dir)); } /* @@ -687,9 +687,9 @@ int ocfs2_calc_xattr_init(struct inode *dir, * and have to be set outside */ if (si->enable && si->value_len > OCFS2_XATTR_INLINE_SIZE) { - new_clusters = ocfs2_clusters_for_bytes(dir->i_sb, + new_clusters = ocfs2_clusters_for_bytes(inode_sb(dir), si->value_len); - *xattr_credits += ocfs2_clusters_to_blocks(dir->i_sb, + *xattr_credits += ocfs2_clusters_to_blocks(inode_sb(dir), new_clusters); *want_clusters += new_clusters; } @@ -697,8 +697,9 @@ int ocfs2_calc_xattr_init(struct inode *dir, acl_len > OCFS2_XATTR_INLINE_SIZE) { /* for directory, it has DEFAULT and ACCESS two types of acls */ new_clusters = (S_ISDIR(mode) ? 2 : 1) * - ocfs2_clusters_for_bytes(dir->i_sb, acl_len); - *xattr_credits += ocfs2_clusters_to_blocks(dir->i_sb, + ocfs2_clusters_for_bytes(inode_sb(dir), + acl_len); + *xattr_credits += ocfs2_clusters_to_blocks(inode_sb(dir), new_clusters); *want_clusters += new_clusters; } @@ -756,7 +757,7 @@ static int ocfs2_xattr_extend_allocation(struct inode *inode, */ BUG_ON(why == RESTART_META); - credits = ocfs2_calc_extend_credits(inode->i_sb, + credits = ocfs2_calc_extend_credits(inode_sb(inode), &vb->vb_xv->xr_list); status = ocfs2_extend_trans(handle, credits); if (status < 0) { @@ -777,7 +778,7 @@ static int __ocfs2_remove_xattr_range(struct inode *inode, struct ocfs2_xattr_set_ctxt *ctxt) { int ret; - u64 phys_blkno = ocfs2_clusters_to_blocks(inode->i_sb, phys_cpos); + u64 phys_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), phys_cpos); handle_t *handle = ctxt->handle; struct ocfs2_extent_tree et; @@ -802,7 +803,7 @@ static int __ocfs2_remove_xattr_range(struct inode *inode, if (ext_flags & OCFS2_EXT_REFCOUNTED) ret = ocfs2_decrease_refcount(inode, handle, - ocfs2_blocks_to_clusters(inode->i_sb, + ocfs2_blocks_to_clusters(inode_sb(inode), phys_blkno), len, ctxt->meta_ac, &ctxt->dealloc, 1); else @@ -851,7 +852,7 @@ static int ocfs2_xattr_shrink_size(struct inode *inode, goto out; } - block = ocfs2_clusters_to_blocks(inode->i_sb, phys_cpos); + block = ocfs2_clusters_to_blocks(inode_sb(inode), phys_cpos); ocfs2_remove_xattr_clusters_from_cache(INODE_CACHE(inode), block, alloc_size); cpos += alloc_size; @@ -868,7 +869,7 @@ static int ocfs2_xattr_value_truncate(struct inode *inode, struct ocfs2_xattr_set_ctxt *ctxt) { int ret; - u32 new_clusters = ocfs2_clusters_for_bytes(inode->i_sb, len); + u32 new_clusters = ocfs2_clusters_for_bytes(inode_sb(inode), len); u32 old_clusters = le32_to_cpu(vb->vb_xv->xr_clusters); if (new_clusters == old_clusters) @@ -949,7 +950,7 @@ static int ocfs2_xattr_list_entries(struct inode *inode, name = (const char *)header + le16_to_cpu(entry->xe_name_offset); - ret = ocfs2_xattr_list_entry(inode->i_sb, + ret = ocfs2_xattr_list_entry(inode_sb(inode), buffer, buffer_size, &result, type, name, entry->xe_name_len); @@ -967,8 +968,8 @@ int ocfs2_has_inline_xattr_value_outside(struct inode *inode, int i; xh = (struct ocfs2_xattr_header *) - ((void *)di + inode->i_sb->s_blocksize - - le16_to_cpu(di->i_xattr_inline_size)); + ((void *)di + inode_sb(inode)->s_blocksize - + le16_to_cpu(di->i_xattr_inline_size)); for (i = 0; i < le16_to_cpu(xh->xh_count); i++) if (!ocfs2_xattr_is_local(&xh->xh_entries[i])) @@ -990,8 +991,8 @@ static int ocfs2_xattr_ibody_list(struct inode *inode, return ret; header = (struct ocfs2_xattr_header *) - ((void *)di + inode->i_sb->s_blocksize - - le16_to_cpu(di->i_xattr_inline_size)); + ((void *)di + inode_sb(inode)->s_blocksize - + le16_to_cpu(di->i_xattr_inline_size)); ret = ocfs2_xattr_list_entries(inode, header, buffer, buffer_size); @@ -1120,8 +1121,8 @@ static int ocfs2_xattr_get_value_outside(struct inode *inode, el = &xv->xr_list; clusters = le32_to_cpu(xv->xr_clusters); - bpc = ocfs2_clusters_to_blocks(inode->i_sb, 1); - blocksize = inode->i_sb->s_blocksize; + bpc = ocfs2_clusters_to_blocks(inode_sb(inode), 1); + blocksize = inode_sb(inode)->s_blocksize; cpos = 0; while (cpos < clusters) { @@ -1132,7 +1133,7 @@ static int ocfs2_xattr_get_value_outside(struct inode *inode, goto out; } - blkno = ocfs2_clusters_to_blocks(inode->i_sb, p_cluster); + blkno = ocfs2_clusters_to_blocks(inode_sb(inode), p_cluster); /* Copy ocfs2_xattr_value */ for (i = 0; i < num_clusters * bpc; i++, blkno++) { ret = ocfs2_read_block(INODE_CACHE(inode), blkno, @@ -1174,7 +1175,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode, if (!(oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL)) return -ENODATA; - xs->end = (void *)di + inode->i_sb->s_blocksize; + xs->end = (void *)di + inode_sb(inode)->s_blocksize; xs->header = (struct ocfs2_xattr_header *) (xs->end - le16_to_cpu(di->i_xattr_inline_size)); xs->base = (void *)xs->header; @@ -1251,7 +1252,7 @@ static int ocfs2_xattr_block_get(struct inode *inode, i = xs->here - xs->header->xh_entries; if (le16_to_cpu(xb->xb_flags) & OCFS2_XATTR_INDEXED) { - ret = ocfs2_xattr_bucket_get_name_value(inode->i_sb, + ret = ocfs2_xattr_bucket_get_name_value(inode_sb(inode), bucket_xh(xs->bucket), i, &block_off, @@ -1302,7 +1303,7 @@ int ocfs2_xattr_get_nolock(struct inode *inode, .not_found = -ENODATA, }; - if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + if (!ocfs2_supports_xattr(OCFS2_SB(inode_sb(inode)))) return -EOPNOTSUPP; if (!(oi->ip_dyn_features & OCFS2_HAS_XATTR_FL)) @@ -1359,10 +1360,10 @@ static int __ocfs2_xattr_set_value_outside(struct inode *inode, int value_len) { int ret = 0, i, cp_len; - u16 blocksize = inode->i_sb->s_blocksize; + u16 blocksize = inode_sb(inode)->s_blocksize; u32 p_cluster, num_clusters; - u32 cpos = 0, bpc = ocfs2_clusters_to_blocks(inode->i_sb, 1); - u32 clusters = ocfs2_clusters_for_bytes(inode->i_sb, value_len); + u32 cpos = 0, bpc = ocfs2_clusters_to_blocks(inode_sb(inode), 1); + u32 clusters = ocfs2_clusters_for_bytes(inode_sb(inode), value_len); u64 blkno; struct buffer_head *bh = NULL; unsigned int ext_flags; @@ -1381,7 +1382,7 @@ static int __ocfs2_xattr_set_value_outside(struct inode *inode, BUG_ON(ext_flags & OCFS2_EXT_REFCOUNTED); - blkno = ocfs2_clusters_to_blocks(inode->i_sb, p_cluster); + blkno = ocfs2_clusters_to_blocks(inode_sb(inode), p_cluster); for (i = 0; i < num_clusters * bpc; i++, blkno++) { ret = ocfs2_read_block(INODE_CACHE(inode), blkno, @@ -1732,8 +1733,8 @@ static void *ocfs2_xa_bucket_offset_pointer(struct ocfs2_xa_loc *loc, int block, block_offset; /* The header is at the front of the bucket */ - block = offset >> loc->xl_inode->i_sb->s_blocksize_bits; - block_offset = offset % loc->xl_inode->i_sb->s_blocksize; + block = offset >> inode_sb(loc->xl_inode)->s_blocksize_bits; + block_offset = offset % inode_sb(loc->xl_inode)->s_blocksize; return bucket_block(bucket, block) + block_offset; } @@ -1773,7 +1774,7 @@ static int ocfs2_xa_bucket_check_space(struct ocfs2_xa_loc *loc, int free_start = ocfs2_xa_get_free_start(loc); int needed_space = ocfs2_xi_entry_usage(xi); int size = namevalue_size_xi(xi); - struct super_block *sb = loc->xl_inode->i_sb; + struct super_block *sb = inode_sb(loc->xl_inode); /* * Bucket storage does not reclaim name+value pairs it cannot @@ -1855,7 +1856,7 @@ static void ocfs2_xa_bucket_add_namevalue(struct ocfs2_xa_loc *loc, int size) { int free_start = ocfs2_xa_get_free_start(loc); struct ocfs2_xattr_header *xh = loc->xl_header; - struct super_block *sb = loc->xl_inode->i_sb; + struct super_block *sb = inode_sb(loc->xl_inode); int nameval_offset; free_start = ocfs2_bucket_align_free_start(sb, free_start, size); @@ -1870,7 +1871,7 @@ static void ocfs2_xa_bucket_fill_value_buf(struct ocfs2_xa_loc *loc, struct ocfs2_xattr_value_buf *vb) { struct ocfs2_xattr_bucket *bucket = loc->xl_storage; - struct super_block *sb = loc->xl_inode->i_sb; + struct super_block *sb = inode_sb(loc->xl_inode); int nameval_offset = le16_to_cpu(loc->xl_entry->xe_name_offset); int size = namevalue_size_xe(loc->xl_entry); int block_offset = nameval_offset >> sb->s_blocksize_bits; @@ -2358,7 +2359,7 @@ static int ocfs2_lock_xattr_remove_allocators(struct inode *inode, goto out; } - ret = ocfs2_reserve_new_metadata_blocks(OCFS2_SB(inode->i_sb), + ret = ocfs2_reserve_new_metadata_blocks(OCFS2_SB(inode_sb(inode)), meta_add, meta_ac); if (ret) mlog_errno(ret); @@ -2374,7 +2375,7 @@ static int ocfs2_remove_value_outside(struct inode*inode, struct buffer_head *ref_root_bh) { int ret = 0, i, ref_credits; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_xattr_set_ctxt ctxt = { NULL, NULL, }; void *val; @@ -2441,8 +2442,8 @@ static int ocfs2_xattr_ibody_remove(struct inode *inode, }; header = (struct ocfs2_xattr_header *) - ((void *)di + inode->i_sb->s_blocksize - - le16_to_cpu(di->i_xattr_inline_size)); + ((void *)di + inode_sb(inode)->s_blocksize - + le16_to_cpu(di->i_xattr_inline_size)); ret = ocfs2_remove_value_outside(inode, &vb, header, ref_ci, ref_root_bh); @@ -2494,7 +2495,7 @@ static int ocfs2_xattr_free_block(struct inode *inode, struct buffer_head *xb_alloc_bh = NULL; struct buffer_head *blk_bh = NULL; struct ocfs2_xattr_block *xb; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); handle_t *handle; int ret = 0; u64 blk, bg_blkno; @@ -2575,14 +2576,14 @@ int ocfs2_xattr_remove(struct inode *inode, struct buffer_head *di_bh) handle_t *handle; int ret; - if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + if (!ocfs2_supports_xattr(OCFS2_SB(inode_sb(inode)))) return 0; if (!(oi->ip_dyn_features & OCFS2_HAS_XATTR_FL)) return 0; if (ocfs2_is_refcount_inode(inode)) { - ret = ocfs2_lock_refcount_tree(OCFS2_SB(inode->i_sb), + ret = ocfs2_lock_refcount_tree(OCFS2_SB(inode_sb(inode)), le64_to_cpu(di->i_refcount_loc), 1, &ref_tree, &ref_root_bh); if (ret) { @@ -2612,7 +2613,7 @@ int ocfs2_xattr_remove(struct inode *inode, struct buffer_head *di_bh) } } - handle = ocfs2_start_trans((OCFS2_SB(inode->i_sb)), + handle = ocfs2_start_trans((OCFS2_SB(inode_sb(inode))), OCFS2_INODE_UPDATE_CREDITS); if (IS_ERR(handle)) { ret = PTR_ERR(handle); @@ -2636,10 +2637,11 @@ int ocfs2_xattr_remove(struct inode *inode, struct buffer_head *di_bh) ocfs2_journal_dirty(handle, di_bh); out_commit: - ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); + ocfs2_commit_trans(OCFS2_SB(inode_sb(inode)), handle); out: if (ref_tree) - ocfs2_unlock_refcount_tree(OCFS2_SB(inode->i_sb), ref_tree, 1); + ocfs2_unlock_refcount_tree(OCFS2_SB(inode_sb(inode)), + ref_tree, 1); brelse(ref_root_bh); return ret; } @@ -2648,7 +2650,7 @@ static int ocfs2_xattr_has_space_inline(struct inode *inode, struct ocfs2_dinode *di) { struct ocfs2_inode_info *oi = OCFS2_I(inode); - unsigned int xattrsize = OCFS2_SB(inode->i_sb)->s_xattr_inline_size; + unsigned int xattrsize = OCFS2_SB(inode_sb(inode))->s_xattr_inline_size; int free; if (xattrsize < OCFS2_MIN_XATTR_INLINE_SIZE) @@ -2658,7 +2660,7 @@ static int ocfs2_xattr_has_space_inline(struct inode *inode, struct ocfs2_inline_data *idata = &di->id2.i_data; free = le16_to_cpu(idata->id_count) - le64_to_cpu(di->i_size); } else if (ocfs2_inode_is_fast_symlink(inode)) { - free = ocfs2_fast_symlink_chars(inode->i_sb) - + free = ocfs2_fast_symlink_chars(inode_sb(inode)) - le64_to_cpu(di->i_size); } else { struct ocfs2_extent_list *el = &di->id2.i_list; @@ -2688,7 +2690,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode, int ret; int has_space = 0; - if (inode->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE) + if (inode_sb(inode)->s_blocksize == OCFS2_MIN_BLOCKSIZE) return 0; if (!(oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL)) { @@ -2700,13 +2702,13 @@ static int ocfs2_xattr_ibody_find(struct inode *inode, } xs->xattr_bh = xs->inode_bh; - xs->end = (void *)di + inode->i_sb->s_blocksize; + xs->end = (void *)di + inode_sb(inode)->s_blocksize; if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) xs->header = (struct ocfs2_xattr_header *) (xs->end - le16_to_cpu(di->i_xattr_inline_size)); else xs->header = (struct ocfs2_xattr_header *) - (xs->end - OCFS2_SB(inode->i_sb)->s_xattr_inline_size); + (xs->end - OCFS2_SB(inode_sb(inode))->s_xattr_inline_size); xs->base = (void *)xs->header; xs->here = xs->header->xh_entries; @@ -2728,7 +2730,7 @@ static int ocfs2_xattr_ibody_init(struct inode *inode, int ret; struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); unsigned int xattrsize = osb->s_xattr_inline_size; if (!ocfs2_xattr_has_space_inline(inode, di)) { @@ -2783,7 +2785,7 @@ static int ocfs2_xattr_ibody_set(struct inode *inode, struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_xa_loc loc; - if (inode->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE) + if (inode_sb(inode)->s_blocksize == OCFS2_MIN_BLOCKSIZE) return -ENOSPC; down_write(&oi->ip_alloc_sem); @@ -2894,7 +2896,7 @@ static int ocfs2_create_xattr_block(struct inode *inode, goto end; } - new_bh = sb_getblk(inode->i_sb, first_blkno); + new_bh = sb_getblk(inode_sb(inode), first_blkno); if (!new_bh) { ret = -ENOMEM; mlog_errno(ret); @@ -2913,13 +2915,13 @@ static int ocfs2_create_xattr_block(struct inode *inode, /* Initialize ocfs2_xattr_block */ xblk = (struct ocfs2_xattr_block *)new_bh->b_data; - memset(xblk, 0, inode->i_sb->s_blocksize); + memset(xblk, 0, inode_sb(inode)->s_blocksize); strcpy((void *)xblk, OCFS2_XATTR_BLOCK_SIGNATURE); xblk->xb_suballoc_slot = cpu_to_le16(ctxt->meta_ac->ac_alloc_slot); xblk->xb_suballoc_loc = cpu_to_le64(suballoc_loc); xblk->xb_suballoc_bit = cpu_to_le16(suballoc_bit_start); xblk->xb_fs_generation = - cpu_to_le32(OCFS2_SB(inode->i_sb)->fs_generation); + cpu_to_le32(OCFS2_SB(inode_sb(inode))->fs_generation); xblk->xb_blkno = cpu_to_le64(first_blkno); if (indexed) { struct ocfs2_xattr_tree_root *xr = &xblk->xb_attrs.xb_root; @@ -2927,7 +2929,7 @@ static int ocfs2_create_xattr_block(struct inode *inode, xr->xt_last_eb_blk = 0; xr->xt_list.l_tree_depth = 0; xr->xt_list.l_count = cpu_to_le16( - ocfs2_xattr_recs_per_xb(inode->i_sb)); + ocfs2_xattr_recs_per_xb(inode_sb(inode))); xr->xt_list.l_next_free_rec = cpu_to_le16(1); xblk->xb_flags = cpu_to_le16(OCFS2_XATTR_INDEXED); } @@ -2979,7 +2981,7 @@ static int ocfs2_xattr_block_set(struct inode *inode, xblk = (struct ocfs2_xattr_block *)xs->xattr_bh->b_data; xs->header = &xblk->xb_attrs.xb_header; xs->base = (void *)xs->header; - xs->end = (void *)xblk + inode->i_sb->s_blocksize; + xs->end = (void *)xblk + inode_sb(inode)->s_blocksize; xs->here = xs->header->xh_entries; } else xblk = (struct ocfs2_xattr_block *)xs->xattr_bh->b_data; @@ -3057,7 +3059,7 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, struct ocfs2_xattr_value_root *xv = NULL; char *base = NULL; int name_offset, name_len = 0; - u32 new_clusters = ocfs2_clusters_for_bytes(inode->i_sb, + u32 new_clusters = ocfs2_clusters_for_bytes(inode_sb(inode), xi->xi_value_len); u64 value_size; @@ -3068,15 +3070,15 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, */ if (xi->xi_value_len > OCFS2_XATTR_INLINE_SIZE) credits += new_clusters * - ocfs2_clusters_to_blocks(inode->i_sb, 1); + ocfs2_clusters_to_blocks(inode_sb(inode), 1); if (xis->not_found && xbs->not_found) { - credits += ocfs2_blocks_per_xattr_bucket(inode->i_sb); + credits += ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); if (xi->xi_value_len > OCFS2_XATTR_INLINE_SIZE) { clusters_add += new_clusters; - credits += ocfs2_calc_extend_credits(inode->i_sb, - &def_xv.xv.xr_list); + credits += ocfs2_calc_extend_credits(inode_sb(inode), + &def_xv.xv.xr_list); } goto meta_guess; @@ -3098,12 +3100,12 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, old_in_xb = 1; if (le16_to_cpu(xb->xb_flags) & OCFS2_XATTR_INDEXED) { - ret = ocfs2_xattr_bucket_get_name_value(inode->i_sb, - bucket_xh(xbs->bucket), - i, &block_off, - &name_offset); + ret = ocfs2_xattr_bucket_get_name_value(inode_sb(inode), + bucket_xh(xbs->bucket), + i, &block_off, + &name_offset); base = bucket_block(xbs->bucket, block_off); - credits += ocfs2_blocks_per_xattr_bucket(inode->i_sb); + credits += ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); } else { base = xbs->base; credits += OCFS2_XATTR_BLOCK_UPDATE_CREDITS; @@ -3119,7 +3121,7 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, */ if (!xi->xi_value) { if (!ocfs2_xattr_is_local(xe)) - credits += ocfs2_remove_extent_credits(inode->i_sb); + credits += ocfs2_remove_extent_credits(inode_sb(inode)); goto out; } @@ -3136,12 +3138,11 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, */ if (ocfs2_xattr_can_be_in_inode(inode, xi, xis)) { clusters_add += new_clusters; - credits += ocfs2_remove_extent_credits(inode->i_sb) + + credits += ocfs2_remove_extent_credits(inode_sb(inode)) + OCFS2_INODE_UPDATE_CREDITS; if (!ocfs2_xattr_is_local(xe)) - credits += ocfs2_calc_extend_credits( - inode->i_sb, - &def_xv.xv.xr_list); + credits += ocfs2_calc_extend_credits(inode_sb(inode), + &def_xv.xv.xr_list); goto out; } } @@ -3151,8 +3152,8 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, u32 old_clusters = 0; if (!ocfs2_xattr_is_local(xe)) { - old_clusters = ocfs2_clusters_for_bytes(inode->i_sb, - value_size); + old_clusters = ocfs2_clusters_for_bytes(inode_sb(inode), + value_size); xv = (struct ocfs2_xattr_value_root *) (base + name_offset + name_len); value_size = OCFS2_XATTR_ROOT_SIZE; @@ -3160,12 +3161,12 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, xv = &def_xv.xv; if (old_clusters >= new_clusters) { - credits += ocfs2_remove_extent_credits(inode->i_sb); + credits += ocfs2_remove_extent_credits(inode_sb(inode)); goto out; } else { meta_add += ocfs2_extend_meta_needed(&xv->xr_list); clusters_add += new_clusters - old_clusters; - credits += ocfs2_calc_extend_credits(inode->i_sb, + credits += ocfs2_calc_extend_credits(inode_sb(inode), &xv->xr_list); if (value_size >= OCFS2_XATTR_ROOT_SIZE) goto out; @@ -3211,7 +3212,7 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, struct ocfs2_extent_list *el = &xb->xb_attrs.xb_root.xt_list; meta_add += ocfs2_extend_meta_needed(el); - credits += ocfs2_calc_extend_credits(inode->i_sb, + credits += ocfs2_calc_extend_credits(inode_sb(inode), el); } else credits += OCFS2_SUBALLOC_ALLOC + 1; @@ -3224,10 +3225,10 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, * also. */ clusters_add += 1; - credits += ocfs2_blocks_per_xattr_bucket(inode->i_sb); + credits += ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); if (OCFS2_XATTR_BUCKET_SIZE == - OCFS2_SB(inode->i_sb)->s_clustersize) { - credits += ocfs2_blocks_per_xattr_bucket(inode->i_sb); + OCFS2_SB(inode_sb(inode))->s_clustersize) { + credits += ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); clusters_add += 1; } } else { @@ -3235,7 +3236,7 @@ static int ocfs2_calc_xattr_set_need(struct inode *inode, if (xi->xi_value_len > OCFS2_XATTR_INLINE_SIZE) { struct ocfs2_extent_list *el = &def_xv.xv.xr_list; meta_add += ocfs2_extend_meta_needed(el); - credits += ocfs2_calc_extend_credits(inode->i_sb, + credits += ocfs2_calc_extend_credits(inode_sb(inode), el); } else { meta_add += 1; @@ -3262,7 +3263,7 @@ static int ocfs2_init_xattr_set_ctxt(struct inode *inode, int *credits) { int clusters_add, meta_add, ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); memset(ctxt, 0, sizeof(struct ocfs2_xattr_set_ctxt)); @@ -3485,7 +3486,7 @@ int ocfs2_xattr_set_handle(handle_t *handle, .data_ac = data_ac, }; - if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + if (!ocfs2_supports_xattr(OCFS2_SB(inode_sb(inode)))) return -EOPNOTSUPP; /* @@ -3493,7 +3494,7 @@ int ocfs2_xattr_set_handle(handle_t *handle, * block size is too small. And we have already reserved * the credits for bucket in mknod. */ - if (inode->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE) { + if (inode_sb(inode)->s_blocksize == OCFS2_MIN_BLOCKSIZE) { xbs.bucket = ocfs2_xattr_bucket_new(inode); if (!xbs.bucket) { mlog_errno(-ENOMEM); @@ -3542,7 +3543,7 @@ int ocfs2_xattr_set(struct inode *inode, struct buffer_head *di_bh = NULL; struct ocfs2_dinode *di; int ret, credits, had_lock, ref_meta = 0, ref_credits = 0; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *tl_inode = osb->osb_tl_inode; struct ocfs2_xattr_set_ctxt ctxt = { NULL, NULL, NULL, }; struct ocfs2_refcount_tree *ref_tree = NULL; @@ -3564,7 +3565,7 @@ int ocfs2_xattr_set(struct inode *inode, .not_found = -ENODATA, }; - if (!ocfs2_supports_xattr(OCFS2_SB(inode->i_sb))) + if (!ocfs2_supports_xattr(OCFS2_SB(inode_sb(inode)))) return -EOPNOTSUPP; /* @@ -3715,7 +3716,7 @@ static int ocfs2_xattr_get_rec(struct inode *inode, el = &eb->h_list; if (el->l_tree_depth) { - ret = ocfs2_error(inode->i_sb, + ret = ocfs2_error(inode_sb(inode), "Inode %lu has non zero tree depth in xattr tree block %llu\n", inode->i_ino, (unsigned long long)eb_bh->b_blocknr); @@ -3733,7 +3734,8 @@ static int ocfs2_xattr_get_rec(struct inode *inode, } if (!e_blkno) { - ret = ocfs2_error(inode->i_sb, "Inode %lu has bad extent record (%u, %u, 0) in xattr\n", + ret = ocfs2_error(inode_sb(inode), + "Inode %lu has bad extent record (%u, %u, 0) in xattr\n", inode->i_ino, le32_to_cpu(rec->e_cpos), ocfs2_rec_clusters(el, rec)); @@ -3785,7 +3787,7 @@ static int ocfs2_find_xe_in_bucket(struct inode *inode, if (cmp) continue; - ret = ocfs2_xattr_bucket_get_name_value(inode->i_sb, + ret = ocfs2_xattr_bucket_get_name_value(inode_sb(inode), xh, i, &block_off, @@ -3830,7 +3832,7 @@ static int ocfs2_xattr_bucket_find(struct inode *inode, struct ocfs2_xattr_header *xh = NULL; struct ocfs2_xattr_entry *xe = NULL; u16 index = 0; - u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); int low_bucket = 0, bucket, high_bucket; struct ocfs2_xattr_bucket *search; u32 last_hash; @@ -3915,7 +3917,7 @@ static int ocfs2_xattr_bucket_find(struct inode *inode, xs->header = bucket_xh(xs->bucket); xs->base = bucket_block(xs->bucket, 0); - xs->end = xs->base + inode->i_sb->s_blocksize; + xs->end = xs->base + inode_sb(inode)->s_blocksize; if (found) { xs->here = &xs->header->xh_entries[index]; @@ -3982,7 +3984,7 @@ static int ocfs2_iterate_xattr_buckets(struct inode *inode, void *para) { int i, ret = 0; - u32 bpc = ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode->i_sb)); + u32 bpc = ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode_sb(inode))); u32 num_buckets = clusters * bpc; struct ocfs2_xattr_bucket *bucket; @@ -4066,7 +4068,7 @@ static int ocfs2_list_xattr_bucket(struct inode *inode, struct ocfs2_xattr_entry *entry = &bucket_xh(bucket)->xh_entries[i]; type = ocfs2_xattr_get_type(entry); - ret = ocfs2_xattr_bucket_get_name_value(inode->i_sb, + ret = ocfs2_xattr_bucket_get_name_value(inode_sb(inode), bucket_xh(bucket), i, &block_off, @@ -4076,7 +4078,7 @@ static int ocfs2_list_xattr_bucket(struct inode *inode, name = (const char *)bucket_block(bucket, block_off) + new_offset; - ret = ocfs2_xattr_list_entry(inode->i_sb, + ret = ocfs2_xattr_list_entry(inode_sb(inode), xl->buffer, xl->buffer_size, &xl->result, @@ -4196,8 +4198,8 @@ static void ocfs2_cp_xattr_block_to_bucket(struct inode *inode, struct buffer_head *xb_bh, struct ocfs2_xattr_bucket *bucket) { - int i, blocksize = inode->i_sb->s_blocksize; - int blks = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + int i, blocksize = inode_sb(inode)->s_blocksize; + int blks = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); u16 offset, size, off_change; struct ocfs2_xattr_entry *xe; struct ocfs2_xattr_block *xb = @@ -4271,7 +4273,7 @@ static void ocfs2_xattr_update_xattr_search(struct inode *inode, xs->header = bucket_xh(xs->bucket); xs->base = bucket_block(xs->bucket, 0); - xs->end = xs->base + inode->i_sb->s_blocksize; + xs->end = xs->base + inode_sb(inode)->s_blocksize; if (xs->not_found) return; @@ -4327,7 +4329,7 @@ static int ocfs2_xattr_create_index_block(struct inode *inode, * we will only touch the 1st block and the last block * in the whole bucket(one for entry and one for data). */ - blkno = ocfs2_clusters_to_blocks(inode->i_sb, bit_off); + blkno = ocfs2_clusters_to_blocks(inode_sb(inode), bit_off); trace_ocfs2_xattr_create_index_block((unsigned long long)blkno); @@ -4350,14 +4352,14 @@ static int ocfs2_xattr_create_index_block(struct inode *inode, ocfs2_xattr_update_xattr_search(inode, xs, xb_bh); /* Change from ocfs2_xattr_header to ocfs2_xattr_tree_root */ - memset(&xb->xb_attrs, 0, inode->i_sb->s_blocksize - + memset(&xb->xb_attrs, 0, inode_sb(inode)->s_blocksize - offsetof(struct ocfs2_xattr_block, xb_attrs)); xr = &xb->xb_attrs.xb_root; xr->xt_clusters = cpu_to_le32(1); xr->xt_last_eb_blk = 0; xr->xt_list.l_tree_depth = 0; - xr->xt_list.l_count = cpu_to_le16(ocfs2_xattr_recs_per_xb(inode->i_sb)); + xr->xt_list.l_count = cpu_to_le16(ocfs2_xattr_recs_per_xb(inode_sb(inode))); xr->xt_list.l_next_free_rec = cpu_to_le16(1); xr->xt_list.l_recs[0].e_cpos = 0; @@ -4403,7 +4405,7 @@ static int ocfs2_defrag_xattr_bucket(struct inode *inode, char *entries, *buf, *bucket_buf = NULL; u64 blkno = bucket_blkno(bucket); u16 xh_free_start; - size_t blocksize = inode->i_sb->s_blocksize; + size_t blocksize = inode_sb(inode)->s_blocksize; struct ocfs2_xattr_entry *xe; /* @@ -4524,7 +4526,7 @@ static int ocfs2_mv_xattr_bucket_cross_cluster(struct inode *inode, u32 *first_hash) { int ret; - struct super_block *sb = inode->i_sb; + struct super_block *sb = inode_sb(inode); int blks_per_bucket = ocfs2_blocks_per_xattr_bucket(sb); int num_buckets = ocfs2_xattr_buckets_per_cluster(OCFS2_SB(sb)); int to_move = num_buckets / 2; @@ -4645,7 +4647,7 @@ static int ocfs2_divide_xattr_bucket(struct inode *inode, struct ocfs2_xattr_bucket *s_bucket = NULL, *t_bucket = NULL; struct ocfs2_xattr_header *xh; struct ocfs2_xattr_entry *xe; - int blocksize = inode->i_sb->s_blocksize; + int blocksize = inode_sb(inode)->s_blocksize; trace_ocfs2_divide_xattr_bucket_begin((unsigned long long)blk, (unsigned long long)new_blk); @@ -4890,8 +4892,8 @@ static int ocfs2_mv_xattr_buckets(struct inode *inode, handle_t *handle, u32 *first_hash) { int i, ret, credits; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); - int blks_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); + int blks_per_bucket = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); int num_buckets = ocfs2_xattr_buckets_per_cluster(osb); struct ocfs2_xattr_bucket *old_first, *new_first; @@ -4993,10 +4995,10 @@ static int ocfs2_divide_xattr_cluster(struct inode *inode, u64 new_blk, u32 *first_hash) { - u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); int ret, credits = 2 * blk_per_bucket; - BUG_ON(OCFS2_XATTR_BUCKET_SIZE < OCFS2_SB(inode->i_sb)->s_clustersize); + BUG_ON(OCFS2_XATTR_BUCKET_SIZE < OCFS2_SB(inode_sb(inode))->s_clustersize); ret = ocfs2_extend_trans(handle, credits); if (ret) { @@ -5050,7 +5052,7 @@ static int ocfs2_adjust_xattr_cross_cluster(struct inode *inode, (unsigned long long)bucket_blkno(first), (unsigned long long)new_blk, prev_clusters); - if (ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode->i_sb)) > 1) { + if (ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode_sb(inode))) > 1) { ret = ocfs2_mv_xattr_bucket_cross_cluster(inode, handle, first, target, @@ -5063,7 +5065,7 @@ static int ocfs2_adjust_xattr_cross_cluster(struct inode *inode, /* The start of the last cluster in the first extent */ u64 last_blk = bucket_blkno(first) + ((prev_clusters - 1) * - ocfs2_clusters_to_blocks(inode->i_sb, 1)); + ocfs2_clusters_to_blocks(inode_sb(inode), 1)); if (prev_clusters > 1 && bucket_blkno(target) != last_blk) { ret = ocfs2_mv_xattr_buckets(inode, handle, @@ -5113,12 +5115,12 @@ static int ocfs2_add_new_xattr_cluster(struct inode *inode, struct ocfs2_xattr_set_ctxt *ctxt) { int ret; - u16 bpc = ocfs2_clusters_to_blocks(inode->i_sb, 1); + u16 bpc = ocfs2_clusters_to_blocks(inode_sb(inode), 1); u32 prev_clusters = *num_clusters; u32 clusters_to_add = 1, bit_off, num_bits, v_start = 0; u64 block; handle_t *handle = ctxt->handle; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_extent_tree et; trace_ocfs2_add_new_xattr_cluster_begin( @@ -5208,8 +5210,8 @@ static int ocfs2_extend_xattr_bucket(struct inode *inode, u32 num_clusters) { int ret, credits; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); - u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); + u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); u64 end_blk; u16 new_bucket = le16_to_cpu(bucket_xh(first)->xh_num_buckets); @@ -5288,7 +5290,7 @@ static int ocfs2_add_new_xattr_bucket(struct inode *inode, struct ocfs2_extent_list *el = &xb_root->xt_list; u32 name_hash = le32_to_cpu(bucket_xh(target)->xh_entries[0].xe_name_hash); - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); int ret, num_buckets, extend = 1; u64 p_blkno; u32 e_cpos, num_clusters; @@ -5372,7 +5374,7 @@ static int ocfs2_xattr_bucket_value_truncate(struct inode *inode, u64 value_blk; struct ocfs2_xattr_entry *xe; struct ocfs2_xattr_header *xh = bucket_xh(bucket); - size_t blocksize = inode->i_sb->s_blocksize; + size_t blocksize = inode_sb(inode)->s_blocksize; struct ocfs2_xattr_value_buf vb = { .vb_access = ocfs2_journal_access, }; @@ -5433,7 +5435,7 @@ static int ocfs2_rm_xattr_cluster(struct inode *inode, void *para) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct inode *tl_inode = osb->osb_tl_inode; handle_t *handle; struct ocfs2_xattr_block *xb = @@ -5669,10 +5671,10 @@ static int ocfs2_delete_xattr_in_bucket(struct inode *inode, struct ocfs2_xattr_header *xh = bucket_xh(bucket); u16 i; struct ocfs2_xattr_entry *xe; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_xattr_set_ctxt ctxt = {NULL, NULL,}; int credits = ocfs2_remove_extent_credits(osb->sb) + - ocfs2_blocks_per_xattr_bucket(inode->i_sb); + ocfs2_blocks_per_xattr_bucket(inode_sb(inode)); struct ocfs2_xattr_value_root *xv; struct ocfs2_rm_xattr_bucket_para *args = (struct ocfs2_rm_xattr_bucket_para *)para; @@ -5684,7 +5686,7 @@ static int ocfs2_delete_xattr_in_bucket(struct inode *inode, if (ocfs2_xattr_is_local(xe)) continue; - ret = ocfs2_get_xattr_tree_value_root(inode->i_sb, bucket, + ret = ocfs2_get_xattr_tree_value_root(inode_sb(inode), bucket, i, &xv, NULL); if (ret) { mlog_errno(ret); @@ -5785,7 +5787,7 @@ static int ocfs2_prepare_refcount_xattr(struct inode *inode, int name_offset, name_len; struct ocfs2_xattr_value_buf vb; struct ocfs2_xattr_bucket *bucket = NULL; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_post_refcount refcount; struct ocfs2_post_refcount *p = NULL; struct buffer_head *ref_root_bh = NULL; @@ -5806,10 +5808,10 @@ static int ocfs2_prepare_refcount_xattr(struct inode *inode, i = xbs->here - xbs->header->xh_entries; if (le16_to_cpu(xb->xb_flags) & OCFS2_XATTR_INDEXED) { - ret = ocfs2_xattr_bucket_get_name_value(inode->i_sb, - bucket_xh(xbs->bucket), - i, &block_off, - &name_offset); + ret = ocfs2_xattr_bucket_get_name_value(inode_sb(inode), + bucket_xh(xbs->bucket), + i, &block_off, + &name_offset); if (ret) { mlog_errno(ret); goto out; @@ -5991,8 +5993,8 @@ static int ocfs2_xattr_inline_attach_refcount(struct inode *inode, { struct ocfs2_dinode *di = (struct ocfs2_dinode *)fe_bh->b_data; struct ocfs2_xattr_header *header = (struct ocfs2_xattr_header *) - (fe_bh->b_data + inode->i_sb->s_blocksize - - le16_to_cpu(di->i_xattr_inline_size)); + (fe_bh->b_data + inode_sb(inode)->s_blocksize - + le16_to_cpu(di->i_xattr_inline_size)); struct ocfs2_xattr_value_buf vb = { .vb_bh = fe_bh, .vb_access = ocfs2_journal_access_di, @@ -6066,7 +6068,7 @@ static int ocfs2_xattr_bucket_value_refcount(struct inode *inode, struct ocfs2_post_refcount *p = NULL; /* We only need post_refcount if we support metaecc. */ - if (ocfs2_meta_ecc(OCFS2_SB(inode->i_sb))) + if (ocfs2_meta_ecc(OCFS2_SB(inode_sb(inode)))) p = &refcount; trace_ocfs2_xattr_bucket_value_refcount( @@ -6078,7 +6080,8 @@ static int ocfs2_xattr_bucket_value_refcount(struct inode *inode, if (ocfs2_xattr_is_local(xe)) continue; - ret = ocfs2_get_xattr_tree_value_root(inode->i_sb, bucket, i, + ret = ocfs2_get_xattr_tree_value_root(inode_sb(inode), bucket, + i, &vb.vb_xv, &vb.vb_bh); if (ret) { mlog_errno(ret); @@ -6358,7 +6361,7 @@ static int ocfs2_reflink_xattr_header(handle_t *handle, void *para) { int ret = 0, i, j; - struct super_block *sb = args->old_inode->i_sb; + struct super_block *sb = inode_sb(args->old_inode); struct buffer_head *value_bh; struct ocfs2_xattr_entry *xe, *last; struct ocfs2_xattr_value_root *xv, *new_xv; @@ -6444,9 +6447,8 @@ static int ocfs2_reflink_xattr_header(handle_t *handle, if (xv->xr_list.l_tree_depth) { ret = ocfs2_insert_extent(handle, &data_et, cpos, - ocfs2_clusters_to_blocks( - args->old_inode->i_sb, - p_cluster), + ocfs2_clusters_to_blocks(inode_sb(args->old_inode), + p_cluster), num_clusters, ext_flags, meta_ac); if (ret) { @@ -6476,7 +6478,7 @@ static int ocfs2_reflink_xattr_inline(struct ocfs2_xattr_reflink *args) { int ret = 0, credits = 0; handle_t *handle; - struct ocfs2_super *osb = OCFS2_SB(args->old_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(args->old_inode)); struct ocfs2_dinode *di = (struct ocfs2_dinode *)args->old_bh->b_data; int inline_size = le16_to_cpu(di->i_xattr_inline_size); int header_off = osb->sb->s_blocksize - inline_size; @@ -6560,7 +6562,7 @@ static int ocfs2_create_empty_xattr_block(struct inode *inode, int indexed) { int ret; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_xattr_set_ctxt ctxt; memset(&ctxt, 0, sizeof(ctxt)); @@ -6598,7 +6600,7 @@ static int ocfs2_reflink_xattr_block(struct ocfs2_xattr_reflink *args, handle_t *handle; struct ocfs2_inode_info *new_oi = OCFS2_I(args->new_inode); struct ocfs2_dinode *new_di; - struct ocfs2_super *osb = OCFS2_SB(args->new_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(args->new_inode)); int header_off = offsetof(struct ocfs2_xattr_block, xb_attrs.xb_header); struct ocfs2_xattr_block *xb = (struct ocfs2_xattr_block *)blk_bh->b_data; @@ -6743,11 +6745,13 @@ static int ocfs2_calc_value_tree_metas(struct inode *inode, /* Add the credits for this bucket first. */ metas->credits += bucket->bu_blocks; - return ocfs2_value_metas_in_xattr_header(inode->i_sb, bucket->bu_bhs[0], - xh, &metas->num_metas, - &metas->credits, &metas->num_recs, - ocfs2_value_tree_metas_in_bucket, - bucket); + return ocfs2_value_metas_in_xattr_header(inode_sb(inode), + bucket->bu_bhs[0], + xh, &metas->num_metas, + &metas->credits, + &metas->num_recs, + ocfs2_value_tree_metas_in_bucket, + bucket); } /* @@ -6764,7 +6768,7 @@ static int ocfs2_lock_reflink_xattr_rec_allocators( { int ret, num_free_extents; struct ocfs2_value_tree_metas metas; - struct ocfs2_super *osb = OCFS2_SB(args->reflink->old_inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(args->reflink->old_inode)); struct ocfs2_refcount_block *rb; memset(&metas, 0, sizeof(metas)); @@ -6849,7 +6853,7 @@ static int ocfs2_reflink_xattr_bucket(handle_t *handle, struct ocfs2_reflink_xattr_tree_args *args) { int i, j, ret = 0; - struct super_block *sb = args->reflink->old_inode->i_sb; + struct super_block *sb = inode_sb(args->reflink->old_inode); int bpb = args->old_bucket->bu_blocks; struct ocfs2_xattr_value_buf vb = { .vb_access = ocfs2_journal_access, @@ -6945,7 +6949,7 @@ static int ocfs2_reflink_xattr_buckets(handle_t *handle, u64 new_blkno; unsigned int num_buckets, reflink_buckets; unsigned int bpc = - ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode->i_sb)); + ocfs2_xattr_buckets_per_cluster(OCFS2_SB(inode_sb(inode))); ret = ocfs2_read_xattr_bucket(args->old_bucket, blkno); if (ret) { @@ -6963,7 +6967,8 @@ static int ocfs2_reflink_xattr_buckets(handle_t *handle, goto out; } - new_blkno = ocfs2_clusters_to_blocks(inode->i_sb, p_cluster); + new_blkno = ocfs2_clusters_to_blocks(inode_sb(inode), + p_cluster); reflink_buckets = min(num_buckets, bpc * num_clusters); ret = ocfs2_reflink_xattr_bucket(handle, blkno, @@ -6993,7 +6998,8 @@ static int ocfs2_reflink_xattr_buckets(handle_t *handle, num_clusters, reflink_cpos); len -= num_clusters; - blkno += ocfs2_clusters_to_blocks(inode->i_sb, num_clusters); + blkno += ocfs2_clusters_to_blocks(inode_sb(inode), + num_clusters); num_buckets -= reflink_buckets; } out: @@ -7014,7 +7020,7 @@ static int ocfs2_reflink_xattr_rec(struct inode *inode, handle_t *handle; struct ocfs2_reflink_xattr_tree_args *args = (struct ocfs2_reflink_xattr_tree_args *)para; - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); struct ocfs2_alloc_context *meta_ac = NULL; struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_extent_tree et; @@ -7153,7 +7159,7 @@ int ocfs2_reflink_xattrs(struct inode *old_inode, struct ocfs2_refcount_tree *ref_tree; struct buffer_head *ref_root_bh = NULL; - ret = ocfs2_lock_refcount_tree(OCFS2_SB(old_inode->i_sb), + ret = ocfs2_lock_refcount_tree(OCFS2_SB(inode_sb(old_inode)), le64_to_cpu(di->i_refcount_loc), 1, &ref_tree, &ref_root_bh); if (ret) { @@ -7200,13 +7206,14 @@ int ocfs2_reflink_xattrs(struct inode *old_inode, brelse(blk_bh); out_unlock: - ocfs2_unlock_refcount_tree(OCFS2_SB(old_inode->i_sb), + ocfs2_unlock_refcount_tree(OCFS2_SB(inode_sb(old_inode)), ref_tree, 1); brelse(ref_root_bh); if (ocfs2_dealloc_has_cluster(&dealloc)) { - ocfs2_schedule_truncate_log_flush(OCFS2_SB(old_inode->i_sb), 1); - ocfs2_run_deallocs(OCFS2_SB(old_inode->i_sb), &dealloc); + ocfs2_schedule_truncate_log_flush(OCFS2_SB(inode_sb(old_inode)), + 1); + ocfs2_run_deallocs(OCFS2_SB(inode_sb(old_inode)), &dealloc); } out: @@ -7290,7 +7297,7 @@ int ocfs2_init_security_get(struct inode *inode, struct ocfs2_security_xattr_info *si) { /* check whether ocfs2 support feature xattr */ - if (!ocfs2_supports_xattr(OCFS2_SB(dir->i_sb))) + if (!ocfs2_supports_xattr(OCFS2_SB(inode_sb(dir)))) return -EOPNOTSUPP; if (si) return security_old_inode_init_security(inode, dir, qstr, @@ -7353,7 +7360,7 @@ static int ocfs2_xattr_user_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, const char *name, void *buffer, size_t size) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (osb->s_mount_opt & OCFS2_MOUNT_NOUSERXATTR) return -EOPNOTSUPP; @@ -7366,7 +7373,7 @@ static int ocfs2_xattr_user_set(const struct xattr_handler *handler, const char *name, const void *value, size_t size, int flags) { - struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct ocfs2_super *osb = OCFS2_SB(inode_sb(inode)); if (osb->s_mount_opt & OCFS2_MOUNT_NOUSERXATTR) return -EOPNOTSUPP; -- 2.15.1