mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
Merge patch series "two little writeback cleanups v2"
Christoph Hellwig <hch@lst.de> says: This fixes one (of multiple) sparse warnings in fs-writeback.c, and then reshuffles the code a bit that only the proper high level API instead of low-level helpers is exported. * patches from https://lore.kernel.org/r/20241112054403.1470586-1-hch@lst.de: writeback: wbc_attach_fdatawrite_inode out of line writeback: add a __releases annoation to wbc_attach_and_unlock_inode Link: https://lore.kernel.org/r/20241112054403.1470586-1-hch@lst.de Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
commit
39bb1bf0b4
@ -290,7 +290,6 @@ void __inode_attach_wb(struct inode *inode, struct folio *folio)
|
|||||||
if (unlikely(cmpxchg(&inode->i_wb, NULL, wb)))
|
if (unlikely(cmpxchg(&inode->i_wb, NULL, wb)))
|
||||||
wb_put(wb);
|
wb_put(wb);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(__inode_attach_wb);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* inode_cgwb_move_to_attached - put the inode onto wb->b_attached list
|
* inode_cgwb_move_to_attached - put the inode onto wb->b_attached list
|
||||||
@ -731,8 +730,9 @@ bool cleanup_offline_cgwb(struct bdi_writeback *wb)
|
|||||||
* writeback completion, wbc_detach_inode() should be called. This is used
|
* writeback completion, wbc_detach_inode() should be called. This is used
|
||||||
* to track the cgroup writeback context.
|
* to track the cgroup writeback context.
|
||||||
*/
|
*/
|
||||||
void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
static void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
||||||
struct inode *inode)
|
struct inode *inode)
|
||||||
|
__releases(&inode->i_lock)
|
||||||
{
|
{
|
||||||
if (!inode_cgwb_enabled(inode)) {
|
if (!inode_cgwb_enabled(inode)) {
|
||||||
spin_unlock(&inode->i_lock);
|
spin_unlock(&inode->i_lock);
|
||||||
@ -762,7 +762,24 @@ void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
|||||||
if (unlikely(wb_dying(wbc->wb) && !css_is_dying(wbc->wb->memcg_css)))
|
if (unlikely(wb_dying(wbc->wb) && !css_is_dying(wbc->wb->memcg_css)))
|
||||||
inode_switch_wbs(inode, wbc->wb_id);
|
inode_switch_wbs(inode, wbc->wb_id);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(wbc_attach_and_unlock_inode);
|
|
||||||
|
/**
|
||||||
|
* wbc_attach_fdatawrite_inode - associate wbc and inode for fdatawrite
|
||||||
|
* @wbc: writeback_control of interest
|
||||||
|
* @inode: target inode
|
||||||
|
*
|
||||||
|
* This function is to be used by __filemap_fdatawrite_range(), which is an
|
||||||
|
* alternative entry point into writeback code, and first ensures @inode is
|
||||||
|
* associated with a bdi_writeback and attaches it to @wbc.
|
||||||
|
*/
|
||||||
|
void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
|
||||||
|
struct inode *inode)
|
||||||
|
{
|
||||||
|
spin_lock(&inode->i_lock);
|
||||||
|
inode_attach_wb(inode, NULL);
|
||||||
|
wbc_attach_and_unlock_inode(wbc, inode);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(wbc_attach_fdatawrite_inode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wbc_detach_inode - disassociate wbc from inode and perform foreign detection
|
* wbc_detach_inode - disassociate wbc from inode and perform foreign detection
|
||||||
@ -1225,6 +1242,13 @@ static void bdi_split_work_to_wbs(struct backing_dev_info *bdi,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
||||||
|
struct inode *inode)
|
||||||
|
__releases(&inode->i_lock)
|
||||||
|
{
|
||||||
|
spin_unlock(&inode->i_lock);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_CGROUP_WRITEBACK */
|
#endif /* CONFIG_CGROUP_WRITEBACK */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -213,9 +213,6 @@ static inline void wait_on_inode(struct inode *inode)
|
|||||||
#include <linux/bio.h>
|
#include <linux/bio.h>
|
||||||
|
|
||||||
void __inode_attach_wb(struct inode *inode, struct folio *folio);
|
void __inode_attach_wb(struct inode *inode, struct folio *folio);
|
||||||
void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
|
||||||
struct inode *inode)
|
|
||||||
__releases(&inode->i_lock);
|
|
||||||
void wbc_detach_inode(struct writeback_control *wbc);
|
void wbc_detach_inode(struct writeback_control *wbc);
|
||||||
void wbc_account_cgroup_owner(struct writeback_control *wbc, struct folio *folio,
|
void wbc_account_cgroup_owner(struct writeback_control *wbc, struct folio *folio,
|
||||||
size_t bytes);
|
size_t bytes);
|
||||||
@ -254,22 +251,8 @@ static inline void inode_detach_wb(struct inode *inode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
|
||||||
* wbc_attach_fdatawrite_inode - associate wbc and inode for fdatawrite
|
struct inode *inode);
|
||||||
* @wbc: writeback_control of interest
|
|
||||||
* @inode: target inode
|
|
||||||
*
|
|
||||||
* This function is to be used by __filemap_fdatawrite_range(), which is an
|
|
||||||
* alternative entry point into writeback code, and first ensures @inode is
|
|
||||||
* associated with a bdi_writeback and attaches it to @wbc.
|
|
||||||
*/
|
|
||||||
static inline void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
|
|
||||||
struct inode *inode)
|
|
||||||
{
|
|
||||||
spin_lock(&inode->i_lock);
|
|
||||||
inode_attach_wb(inode, NULL);
|
|
||||||
wbc_attach_and_unlock_inode(wbc, inode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wbc_init_bio - writeback specific initializtion of bio
|
* wbc_init_bio - writeback specific initializtion of bio
|
||||||
@ -303,13 +286,6 @@ static inline void inode_detach_wb(struct inode *inode)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
|
|
||||||
struct inode *inode)
|
|
||||||
__releases(&inode->i_lock)
|
|
||||||
{
|
|
||||||
spin_unlock(&inode->i_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
|
static inline void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
|
||||||
struct inode *inode)
|
struct inode *inode)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user