- 论坛徽章:
- 0
|
write似乎不是原子操作,因为write的实现肯定不是单条指令,但是它有一种机制来保证它的顺序,比如nfs的write
- lock_kernel();
- if (!IS_SYNC(inode) && inode_referenced) {
- err = nfs_writepage_async(ctx, inode, page, 0, offset);
- if (err >= 0) {
- err = 0;
- if (wbc->for_reclaim)
- nfs_flush_inode(inode, 0, 0, FLUSH_STABLE);
- }
- } else {
- err = nfs_writepage_sync(ctx, inode, page, 0,
- offset, priority);
- if (err >= 0) {
- if (err != offset)
- redirty_page_for_writepage(wbc, page);
- err = 0;
- }
- }
- unlock_kernel();
复制代码
大多数write地实现都用锁来保证它的顺序的,如果谁写的write函数没有保证这个东东,那就混乱了。 |
|