-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
File cannot be written to when recovering from crash during nova_extend_inode_log (checksums+parity enabled) #123
Comments
Thanks for the reporting. However, I am not sure how to use the image:
Writing to |
I suppose you meant It seems that NOVA images are not really portable, I have also tried using it on another virtual machine, but when #cpus != 1 (the crash image was produced with #cpus = 1), weird things happen and the file is not even listed. My guess would be that NOVA does not properly recognize when #cpus have changed and the per-CPU journals are not recovered correctly or so. Should I report this as a separate issue? |
Yes, the change of #cpus is a known issue of NOVA. Fixing that, however, requires a lot of effort I assume. |
This report assumes that NOVA's protection features are enabled (
nova.metadata_csum=1 nova.data_csum=1 nova.data_parity=1
).When writing to a file and crashing during nova_extend_inode_log, this can result in the file becoming unwritable after recovering from that crash state.
I run
echo HelloWorld > /mnt/myfile
as in #105.I consider a crash during
nova_extend_inode_log
with the following call stack:nova_extend_inode_log
<-nova_get_append_head
<-nova_append_log_entry
<-nova_append_file_write_entry
<-do_nova_inplace_file_write
<-nova_inplace_file_write
<-nova_dax_file_write
<-__vfs_write
.I consider persisting only one of the pending stores, I think it's the checksum updated in log.c l. 1224 (I will confirm that later), but not other stores (in particular, excluding some updates performed by
nova_update_alter_pages
).I then load the resulting crash image, and reading the file system is fine (with an empty
/mnt/myfile
), however when appending to the file withecho test >> /mnt/myfile
, an I/O error occurs with the following trace output by NOVA:I have attached the crash image where this problem occurs (I'm not sure though if NOVA images can be used with other machines): img.gz
Edit: I originally wrongly reported this as a kernel fault, however appending to the file is just segfaulting my shell (which is also init), apparently it cannot handle write calls resulting in I/O errors.
Edit 2: I'm really unsure if there maybe still is another kernel issue (and contrary to my previous edit maybe it's not the shell's fault). Even though a subshell with the append command crashes, if I issue the append command a second time in another subshell, the append operation appears not to finish and just hangs. I will need to investigate this further.
The text was updated successfully, but these errors were encountered: