Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'bcachefs-2024-02-05' of https://evilpiepirate.org/git/bcachefs

Pull bcachefs fixes from Kent Overstreet:
"Two serious ones here that we'll want to backport to stable: a fix for
a race in the thread_with_file code, and another locking fixup in the
subvolume deletion path"

* tag 'bcachefs-2024-02-05' of https://evilpiepirate.org/git/bcachefs:
bcachefs: time_stats: Check for last_event == 0 when updating freq stats
bcachefs: install fd later to avoid race with close
bcachefs: unlock parent dir if entry is not found in subvolume deletion
bcachefs: Fix build on parisc by avoiding __multi3()

+7 -6
+2 -2
fs/bcachefs/fs-ioctl.c
··· 455 455 if (IS_ERR(victim)) 456 456 return PTR_ERR(victim); 457 457 458 + dir = d_inode(path.dentry); 458 459 if (victim->d_sb->s_fs_info != c) { 459 460 ret = -EXDEV; 460 461 goto err; ··· 464 463 ret = -ENOENT; 465 464 goto err; 466 465 } 467 - dir = d_inode(path.dentry); 468 466 ret = __bch2_unlink(dir, victim, true); 469 467 if (!ret) { 470 468 fsnotify_rmdir(dir, victim); 471 469 d_delete(victim); 472 470 } 473 - inode_unlock(dir); 474 471 err: 472 + inode_unlock(dir); 475 473 dput(victim); 476 474 path_put(&path); 477 475 return ret;
+1 -1
fs/bcachefs/mean_and_variance.h
··· 17 17 * Rust and rustc has issues with u128. 18 18 */ 19 19 20 - #if defined(__SIZEOF_INT128__) && defined(__KERNEL__) 20 + #if defined(__SIZEOF_INT128__) && defined(__KERNEL__) && !defined(CONFIG_PARISC) 21 21 22 22 typedef struct { 23 23 unsigned __int128 v;
+1 -1
fs/bcachefs/thread_with_file.c
··· 53 53 if (ret) 54 54 goto err; 55 55 56 - fd_install(fd, file); 57 56 get_task_struct(thr->task); 58 57 wake_up_process(thr->task); 58 + fd_install(fd, file); 59 59 return fd; 60 60 err: 61 61 if (fd >= 0)
+3 -2
fs/bcachefs/util.c
··· 418 418 bch2_quantiles_update(&stats->quantiles, duration); 419 419 } 420 420 421 - if (time_after64(end, stats->last_event)) { 421 + if (stats->last_event && time_after64(end, stats->last_event)) { 422 422 freq = end - stats->last_event; 423 423 mean_and_variance_update(&stats->freq_stats, freq); 424 424 mean_and_variance_weighted_update(&stats->freq_stats_weighted, freq); 425 425 stats->max_freq = max(stats->max_freq, freq); 426 426 stats->min_freq = min(stats->min_freq, freq); 427 - stats->last_event = end; 428 427 } 428 + 429 + stats->last_event = end; 429 430 } 430 431 431 432 static void __bch2_time_stats_clear_buffer(struct bch2_time_stats *stats,