]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - fs/dax.c
mm: vmalloc: show number of vmalloc pages in /proc/meminfo
[mirror_ubuntu-hirsute-kernel.git] / fs / dax.c
index 2e48c7ebb97350fee7deb5a7905b36deb5cc095d..fe5e33810cd444b1dd40ee659aaa6de5bf43a568 100644 (file)
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -720,12 +720,11 @@ static void *dax_insert_entry(struct xa_state *xas,
 
        xas_reset(xas);
        xas_lock_irq(xas);
-       if (dax_entry_size(entry) != dax_entry_size(new_entry)) {
+       if (dax_is_zero_entry(entry) || dax_is_empty_entry(entry)) {
+               void *old;
+
                dax_disassociate_entry(entry, mapping, false);
                dax_associate_entry(new_entry, mapping, vmf->vma, vmf->address);
-       }
-
-       if (dax_is_zero_entry(entry) || dax_is_empty_entry(entry)) {
                /*
                 * Only swap our new entry into the page cache if the current
                 * entry is a zero page or an empty entry.  If a normal PTE or
@@ -734,7 +733,7 @@ static void *dax_insert_entry(struct xa_state *xas,
                 * existing entry is a PMD, we will just leave the PMD in the
                 * tree and dirty it if necessary.
                 */
-               void *old = dax_lock_entry(xas, new_entry);
+               old = dax_lock_entry(xas, new_entry);
                WARN_ON_ONCE(old != xa_mk_value(xa_to_value(entry) |
                                        DAX_LOCKED));
                entry = new_entry;
@@ -1188,7 +1187,7 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter,
        unsigned flags = 0;
 
        if (iov_iter_rw(iter) == WRITE) {
-               lockdep_assert_held_exclusive(&inode->i_rwsem);
+               lockdep_assert_held_write(&inode->i_rwsem);
                flags |= IOMAP_WRITE;
        } else {
                lockdep_assert_held(&inode->i_rwsem);