Можете ли вы решить проблему незнания информации inode при изменении пути upperdir в overlayfs?
После изменения пути upperdir:
root@bcd0d4e391f8:~/myDir# ls -i
ls: cannot access 'ssd.c': No such file or directory
ls: cannot access 'ssd.abc': No such file or directory
? ssd.abc ? ssd.c
* Путь upperdir был изменен путем изменения кода overlayfs.
* Исходный код
static int ovl_create_upper(struct dentry *dentry, struct inode *inode,
struct ovl_cattr *attr){
struct dentry *upperdir = ovl_dentry_upper(dentry->d_parent);
struct inode *udir = upperdir->d_inode;
struct dentry *newdentry;
int err;
newdentry = ovl_create_real(udir,
lookup_one_len(dentry->d_name.name,
upperdir,
dentry->d_name.len),
attr);
* Пример кода исправления
static int ovl_create_upper(struct dentry *dentry, struct inode *inode,
struct ovl_cattr *attr){
struct dentry *upperdir = ovl_dentry_upper(dentry->d_parent);
struct inode *udir = upperdir->d_inode;
struct dentry *newdentry;
int err;
extern struct qsh_metadata qsh_mt; //HOON
newdentry = ovl_create_real(qsh_mt.qsh_dentry->d_inode,
lookup_one_len(dentry->d_name.name,
qsh_mt.qsh_dentry,
dentry->d_name.len),
attr);
* В приведенном выше код, я заменил верхнюю часть диска на нужный диск и смонтированный объект dentry. * extern struct qsh_metadata qsh_mt; => Код, который я добавил
ex) struct dentry upperdir = qsh_dentry;
docker базовое монтирование: / dev / sda
qsh_dentry: монтирование / dev / sdb