* that this IO needs to conversion to written when IO is
                 * completed
                 */
-               if (io && !(io->flag & EXT4_IO_END_UNWRITTEN)) {
-                       io->flag = EXT4_IO_END_UNWRITTEN;
-                       atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten);
+               if (io) {
+                       if (!(io->flag & EXT4_IO_END_UNWRITTEN)) {
+                               io->flag = EXT4_IO_END_UNWRITTEN;
+                               atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten);
+                       }
                } else
                        ext4_set_inode_state(inode, EXT4_STATE_DIO_UNWRITTEN);
                if (ext4_should_dioread_nolock(inode))
                 * that we need to perform conversion when IO is done.
                 */
                if ((flags & EXT4_GET_BLOCKS_PRE_IO)) {
-                       if (io && !(io->flag & EXT4_IO_END_UNWRITTEN)) {
-                               io->flag = EXT4_IO_END_UNWRITTEN;
-                               atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten);
+                       if (io) {
+                               if (!(io->flag & EXT4_IO_END_UNWRITTEN)) {
+                                       io->flag = EXT4_IO_END_UNWRITTEN;
+                                       atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten);
+                               }
                        } else
                                ext4_set_inode_state(inode,
                                                     EXT4_STATE_DIO_UNWRITTEN);