inode 等待dio完成

    xiaoxiao2021-03-25  59

    /**  * 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); }
    转载请注明原文地址: https://ju.6miu.com/read-37295.html

    最新回复(0)