本文共 863 字,大约阅读时间需要 2 分钟。
/** * inode_dio_wait - wait for outstanding DIO requests to finish * @inode: inode to wait for * * Waits for all pending direct I/O requests to finish so that we can * proceed with a truncate or equivalent operation. * * Must be called under a lock that serializes taking new references * to i_dio_count, usually by inode->i_mutex. */void inode_dio_wait(struct inode *inode){ if (atomic_read(&inode->i_dio_count)) __inode_dio_wait(inode);}EXPORT_SYMBOL(inode_dio_wait);
/* * Direct i/o helper functions */static void __inode_dio_wait(struct inode *inode){ wait_queue_head_t *wq = bit_waitqueue(&inode->i_state, __I_DIO_WAKEUP); DEFINE_WAIT_BIT(q, &inode->i_state, __I_DIO_WAKEUP); do { prepare_to_wait(wq, &q.wait, TASK_UNINTERRUPTIBLE); if (atomic_read(&inode->i_dio_count)) schedule(); } while (atomic_read(&inode->i_dio_count)); finish_wait(wq, &q.wait);}
转载地址:http://nwhti.baihongyu.com/