0c11190cdc
MFS' get_block() must never return a newly acquired block buffer that is marked dirty from previous use. This patch replaces git-dd59d50, which assumed a working model where blocks for device NO_DEV would never be dirty. For at least one scenario, that assumption does not hold, triggering superblock overwrite warnings. In this patch, blocks are explicitly marked as clean upon being repurposed. The working model is now restored to be: the dirty state of a block is relevant only when its associated device is not set to NO_DEV.
11 lines
403 B
C
11 lines
403 B
C
|
|
#ifndef _MFS_CLEAN_H
|
|
#define _MFS_CLEAN_H 1
|
|
|
|
#define MARKDIRTY(b) do { if(superblock.s_dev == (b)->b_dev && superblock.s_rd_only) { printf("%s:%d: dirty block on rofs! ", __FILE__, __LINE__); util_stacktrace(); } else { (b)->b_dirt = BP_DIRTY; } } while(0)
|
|
#define MARKCLEAN(b) ((b)->b_dirt = BP_CLEAN)
|
|
|
|
#define ISDIRTY(b) ((b)->b_dirt == BP_DIRTY)
|
|
#define ISCLEAN(b) ((b)->b_dirt == BP_CLEAN)
|
|
|
|
#endif
|