aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2010-06-23 04:11:15 -0400
committerAlex Elder <aelder@sgi.com>2010-07-26 14:16:36 -0400
commit4d16e9246fc3b3cf7bc95609eff66929a39daa06 (patch)
treed3e1cb33c3394b7cb95f390a85acb48c80fd5f54 /fs/xfs/linux-2.6
parentca30b2a7b7ac899ac4da6030ccbebf2f137b8e6d (diff)
xfs: simplify buffer pinning
Get rid of the xfs_buf_pin/xfs_buf_unpin/xfs_buf_ispin helpers and opencode them in their only callers, just like we did for the inode pinning a while ago. Also remove duplicate trace points - the bufitem tracepoints cover all the information that is present in a buffer tracepoint. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/linux-2.6')
-rw-r--r--fs/xfs/linux-2.6/xfs_buf.c32
-rw-r--r--fs/xfs/linux-2.6/xfs_buf.h9
-rw-r--r--fs/xfs/linux-2.6/xfs_trace.h2
3 files changed, 2 insertions, 41 deletions
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index 4b2177f5b223..efce8abb375c 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -896,36 +896,6 @@ xfs_buf_unlock(
896 trace_xfs_buf_unlock(bp, _RET_IP_); 896 trace_xfs_buf_unlock(bp, _RET_IP_);
897} 897}
898 898
899
900/*
901 * Pinning Buffer Storage in Memory
902 * Ensure that no attempt to force a buffer to disk will succeed.
903 */
904void
905xfs_buf_pin(
906 xfs_buf_t *bp)
907{
908 trace_xfs_buf_pin(bp, _RET_IP_);
909 atomic_inc(&bp->b_pin_count);
910}
911
912void
913xfs_buf_unpin(
914 xfs_buf_t *bp)
915{
916 trace_xfs_buf_unpin(bp, _RET_IP_);
917
918 if (atomic_dec_and_test(&bp->b_pin_count))
919 wake_up_all(&bp->b_waiters);
920}
921
922int
923xfs_buf_ispin(
924 xfs_buf_t *bp)
925{
926 return atomic_read(&bp->b_pin_count);
927}
928
929STATIC void 899STATIC void
930xfs_buf_wait_unpin( 900xfs_buf_wait_unpin(
931 xfs_buf_t *bp) 901 xfs_buf_t *bp)
@@ -1803,7 +1773,7 @@ xfs_buf_delwri_split(
1803 trace_xfs_buf_delwri_split(bp, _RET_IP_); 1773 trace_xfs_buf_delwri_split(bp, _RET_IP_);
1804 ASSERT(bp->b_flags & XBF_DELWRI); 1774 ASSERT(bp->b_flags & XBF_DELWRI);
1805 1775
1806 if (!xfs_buf_ispin(bp) && !xfs_buf_cond_lock(bp)) { 1776 if (!XFS_BUF_ISPINNED(bp) && !xfs_buf_cond_lock(bp)) {
1807 if (!force && 1777 if (!force &&
1808 time_before(jiffies, bp->b_queuetime + age)) { 1778 time_before(jiffies, bp->b_queuetime + age)) {
1809 xfs_buf_unlock(bp); 1779 xfs_buf_unlock(bp);
diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h
index 5fbecefa5dfd..2a9749a3a762 100644
--- a/fs/xfs/linux-2.6/xfs_buf.h
+++ b/fs/xfs/linux-2.6/xfs_buf.h
@@ -258,11 +258,6 @@ static inline int xfs_buf_geterror(xfs_buf_t *bp)
258/* Buffer Utility Routines */ 258/* Buffer Utility Routines */
259extern xfs_caddr_t xfs_buf_offset(xfs_buf_t *, size_t); 259extern xfs_caddr_t xfs_buf_offset(xfs_buf_t *, size_t);
260 260
261/* Pinning Buffer Storage in Memory */
262extern void xfs_buf_pin(xfs_buf_t *);
263extern void xfs_buf_unpin(xfs_buf_t *);
264extern int xfs_buf_ispin(xfs_buf_t *);
265
266/* Delayed Write Buffer Routines */ 261/* Delayed Write Buffer Routines */
267extern void xfs_buf_delwri_dequeue(xfs_buf_t *); 262extern void xfs_buf_delwri_dequeue(xfs_buf_t *);
268extern void xfs_buf_delwri_promote(xfs_buf_t *); 263extern void xfs_buf_delwri_promote(xfs_buf_t *);
@@ -351,7 +346,7 @@ extern void xfs_buf_terminate(void);
351#define XFS_BUF_SET_VTYPE(bp, type) do { } while (0) 346#define XFS_BUF_SET_VTYPE(bp, type) do { } while (0)
352#define XFS_BUF_SET_REF(bp, ref) do { } while (0) 347#define XFS_BUF_SET_REF(bp, ref) do { } while (0)
353 348
354#define XFS_BUF_ISPINNED(bp) xfs_buf_ispin(bp) 349#define XFS_BUF_ISPINNED(bp) atomic_read(&((bp)->b_pin_count))
355 350
356#define XFS_BUF_VALUSEMA(bp) xfs_buf_lock_value(bp) 351#define XFS_BUF_VALUSEMA(bp) xfs_buf_lock_value(bp)
357#define XFS_BUF_CPSEMA(bp) (xfs_buf_cond_lock(bp) == 0) 352#define XFS_BUF_CPSEMA(bp) (xfs_buf_cond_lock(bp) == 0)
@@ -370,8 +365,6 @@ static inline void xfs_buf_relse(xfs_buf_t *bp)
370 xfs_buf_rele(bp); 365 xfs_buf_rele(bp);
371} 366}
372 367
373#define xfs_bpin(bp) xfs_buf_pin(bp)
374#define xfs_bunpin(bp) xfs_buf_unpin(bp)
375#define xfs_biodone(bp) xfs_buf_ioend(bp, 0) 368#define xfs_biodone(bp) xfs_buf_ioend(bp, 0)
376 369
377#define xfs_biomove(bp, off, len, data, rw) \ 370#define xfs_biomove(bp, off, len, data, rw) \
diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h
index 302820690904..0aea6d5f705a 100644
--- a/fs/xfs/linux-2.6/xfs_trace.h
+++ b/fs/xfs/linux-2.6/xfs_trace.h
@@ -317,8 +317,6 @@ DEFINE_BUF_EVENT(xfs_buf_init);
317DEFINE_BUF_EVENT(xfs_buf_free); 317DEFINE_BUF_EVENT(xfs_buf_free);
318DEFINE_BUF_EVENT(xfs_buf_hold); 318DEFINE_BUF_EVENT(xfs_buf_hold);
319DEFINE_BUF_EVENT(xfs_buf_rele); 319DEFINE_BUF_EVENT(xfs_buf_rele);
320DEFINE_BUF_EVENT(xfs_buf_pin);
321DEFINE_BUF_EVENT(xfs_buf_unpin);
322DEFINE_BUF_EVENT(xfs_buf_iodone); 320DEFINE_BUF_EVENT(xfs_buf_iodone);
323DEFINE_BUF_EVENT(xfs_buf_iorequest); 321DEFINE_BUF_EVENT(xfs_buf_iorequest);
324DEFINE_BUF_EVENT(xfs_buf_bawrite); 322DEFINE_BUF_EVENT(xfs_buf_bawrite);